Membership成员资格--建立和使用角色

背景

像在日常开发OA系统,或是CMS系统时,必须为系统提供角色授权/认证,如果不能提供这些功能,那么系统就不是完整的。假设我们通过对每个用户逐一的授权,最终会导致工作量太大。所以我们需要将用户分组,针对不同用户组授予不同权限。这所说的用户组也称作角色。我们也可以通过自己编程实现用户登录模块,但是任何设计与实现上的缺陷都会影响性能,甚至造成系统漏洞(参看http://www.cnblogs.com/lvfei/archive/2009/12/27/1633534.html)。ASP.NET 2.0以后的平台就内置了对角色的支持,在性能、安全性上都有很好的表现。

为了不影响网站的效率,默认情况下是禁用。要启用这项功能可以在web.config文件的<roleManager>中启用角色管理,如下:

<roleManager enabled="true" cacheRolesInCookie="true" cookieName="ncuhome" defaultProvider="RoleProvider">

另外,除非提供其他提供程序,否则系统会使用默认的提供程序。下面是自己定义的提供程序:

        <roleManager enabled="true" cacheRolesInCookie="true" cookieName="ncuhome" defaultProvider="RoleProvider">
            <providers>
                <clear/>
                <add name="RoleProvider"
                 connectionStringName="MySqlConnection"
                 type="System.Web.Security.SqlRoleProvider,System.Web, Version=2.0.0.0 Culture=neutral, PublicKeyToken=b03f5f711d50a3a"/>
            </providers>
        </roleManager>

下面,我们在程序中可以通过System.Web.Security.Roles类可以对角色信息进行访问和管理.

名称

说明

clip_image001clip_image002

AddUsersToRole

将指定的用户添加到指定的角色中。

clip_image001[1]clip_image002[1]

AddUsersToRoles

将指定的用户添加到指定的角色中。

clip_image001[2]clip_image002[2]

AddUserToRole

将指定的用户添加到指定的角色中。

clip_image001[3]clip_image002[3]

AddUserToRoles

将指定的用户添加到指定的角色中。

clip_image001[4]clip_image002[4]

CreateRole

将新的角色添加到数据源。

clip_image001[5]clip_image002[5]

DeleteCookie

删除在其中缓存角色名称的 Cookie。

clip_image001[6]clip_image002[6]

DeleteRole

已重载。 从数据源移除一个角色。

clip_image001[7]

Equals

已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)

clip_image001[8]clip_image002[7]

FindUsersInRole

获取属于指定角色的用户的列表,其中用户名包含要匹配的指定用户名。

clip_image001[9]clip_image002[8]

GetAllRoles

获取应用程序的所有角色的列表。

clip_image001[10]

GetHashCode

用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。)

clip_image001[11]clip_image002[9]

GetRolesForUser

已重载。 获取一个用户所属角色的列表。

clip_image001[12]

GetType

获取当前实例的 Type。 (从 Object 继承。)

clip_image001[13]clip_image002[10]

GetUsersInRole

获取一个用户所属角色的列表。

clip_image001[14]clip_image002[11]

IsUserInRole

已重载。 获取一个指示用户是否属于指定角色的值。

clip_image001[15]clip_image002[12]

ReferenceEquals

确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)

clip_image001[16]clip_image002[13]

RemoveUserFromRole

从指定的角色中移除指定的用户。

clip_image001[17]clip_image002[14]

RemoveUserFromRoles

从指定的角色中移除指定的用户。

clip_image001[18]clip_image002[15]

RemoveUsersFromRole

从指定的角色中移除指定的用户。

clip_image001[19]clip_image002[16]

RemoveUsersFromRoles

移除指定角色中的指定用户名。

clip_image001[20]clip_image002[17]

RoleExists

获取一个值,该值指示指定的角色名称是否已存在于角色数据源中。

clip_image001[21]

ToString

返回表示当前 ObjectString。 (从 Object 继承。)

 

使用实例

 

if (!Roles.IsUserInRole("Administrator"))
{
    throw new System.Security.SecurityException("对不起,你没有权限!");
}
posted @ 2010-03-04 22:15  吕飞  阅读(905)  评论(0编辑  收藏  举报