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类可以对角色信息进行访问和管理.
|
名称 |
说明 |
将指定的用户添加到指定的角色中。 |
||
将指定的用户添加到指定的角色中。 |
||
将指定的用户添加到指定的角色中。 |
||
将指定的用户添加到指定的角色中。 |
||
将新的角色添加到数据源。 |
||
删除在其中缓存角色名称的 Cookie。 |
||
已重载。 从数据源移除一个角色。 |
||
获取属于指定角色的用户的列表,其中用户名包含要匹配的指定用户名。 |
||
获取应用程序的所有角色的列表。 |
||
用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。) |
||
已重载。 获取一个用户所属角色的列表。 |
||
获取一个用户所属角色的列表。 |
||
已重载。 获取一个指示用户是否属于指定角色的值。 |
||
确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。) |
||
从指定的角色中移除指定的用户。 |
||
从指定的角色中移除指定的用户。 |
||
从指定的角色中移除指定的用户。 |
||
移除指定角色中的指定用户名。 |
||
获取一个值,该值指示指定的角色名称是否已存在于角色数据源中。 |
||
使用实例
if (!Roles.IsUserInRole("Administrator")) { throw new System.Security.SecurityException("对不起,你没有权限!"); }