Roles 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
管理角色中的用户成员资格,以便在 ASP.NET 应用程序中进行授权检查。 此类不能被继承。
public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
- 继承
-
Roles
示例
以下示例演示配置为使用 ASP.NET 成员身份和 ASP.NET 角色,并使用 SqlRoleProvider 在 SQL Server 数据库中存储成员身份和角色信息的应用程序的 Web.config 文件。 用户使用表单身份验证进行身份验证,并且仅允许具有管理员角色的用户访问应用程序。
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
</connectionStrings>
<system.web>
<authentication mode="Forms" >
<forms loginUrl="login.aspx"
name=".ASPXFORMSAUTH" />
</authentication>
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
<membership defaultProvider="AspNetSqlProvider" userIsOnlineTimeWindow="15">
</membership>
<roleManager defaultProvider="SqlProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="true"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="SqlServices"
applicationName="SampleApplication" />
</providers>
</roleManager>
</system.web>
</configuration>
下面的代码示例以编程方式检查登录的用户是否处于管理员角色,然后允许用户查看其他用户的角色。
注解
ASP.NET 角色管理使你能够基于用户组(称为角色)管理应用程序的授权。 通过将用户分配到角色,可以基于角色控制对 Web 应用程序不同部分或功能的访问权限,而不是基于用户名指定授权,或者此外,还可以控制对 Web 应用程序的不同部分或功能的访问。 例如,员工应用程序可能具有经理、员工、董事等角色,其中为每个角色指定了不同的特权。
用户可以属于多个角色。 例如,如果你的网站是一个论坛,则某些用户可能同时担任成员和审阅人的角色。 你可以将每个角色定义为在网站上具有不同的权限,并且具有这两个角色的用户将拥有这两组特权。
若要为 ASP.NET 应用程序启用角色管理,请使用应用程序的 Web.config 文件中 部分的 roleManager 元素 system.web
,如以下示例所示。
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
</connectionStrings>
<system.web>
<authentication mode="Forms" >
<forms loginUrl="login.aspx"
name=".ASPXFORMSAUTH" />
</authentication>
<roleManager defaultProvider="SqlProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<add
name="SqlProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="SqlServices"
applicationName="SampleApplication" />
</providers>
</roleManager>
</system.web>
</configuration>
可以在 Web 应用程序的配置文件中指定授权规则,也可以在代码中以编程方式指定授权规则。 例如,Web.config 文件中的以下 授权 部分要求用户通过拒绝匿名用户) 来登录 (,然后仅允许具有管理员角色的用户具有访问权限。
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
如果使用 authorization
应用程序 Web.config 文件中的 部分来指定基于角色的授权,则应用程序的用户必须提供经过身份验证的用户标识。 可以使用 Windows 或窗体身份验证对用户进行身份验证。 无法将匿名用户分配到角色。 角色可以独立于 ASP.NET 类使用,也可以与 ASP.NET Membership 类结合使用。
若要以编程方式验证角色成员身份,可以将 Roles 类或 Page.User 属性与 方法一起使用 IsUserInRole ,或者将 属性与 方法一 Page.User 起使用 IPrincipal.IsInRole 。 有关以编程方式检查角色成员身份的示例代码,请参阅本主题中的示例部分。
类 Roles 还可用于创建和删除角色,以及向角色添加用户或从角色中删除用户。
注意
如果已将应用程序配置为使用 WindowsTokenRoleProvider 类,则无法修改角色或角色成员身份。 类 WindowsTokenRoleProvider 仅验证 Windows 安全组中的成员身份。 在这种情况下,必须使用 Windows 用户帐户管理而不是 ASP.NET 角色来创建和删除组以及管理组成员身份。
可以在多个数据源中存储角色信息。
可以使用 WindowsTokenRoleProvider 类基于 Windows 组中的成员身份检索角色信息。
可以使用 类将角色信息存储在 SQL Server 数据库中 SqlRoleProvider 。
如果你有现有的角色信息,或者想要在 Windows、授权存储或 SQL Server 以外的数据源中存储角色信息并从中检索角色信息,可以通过创建继承抽象类的 RoleProvider 类来实现自定义角色提供程序。 有关详细信息,请参阅 实现角色提供程序。
如果用户的浏览器接受 Cookie,则可以在用户计算机上的 Cookie 中存储该用户的角色信息。 在每个页面请求中,ASP.NET 从 Cookie 中读取该用户的角色信息。 这可以通过减少与数据源检索角色信息所需的通信量来提高应用程序性能。 如果用户的角色信息太长而无法存储在 Cookie 中,ASP.NET 只存储 Cookie 中最近使用的角色信息,然后根据需要在数据源中查找其他角色信息。 如果用户的浏览器不支持 Cookie 或禁用 Cookie,则角色信息不会缓存在 Cookie 中。
配置 ASP.NET 角色时,可以通过指定 CookieProtectionValue 属性来提高 cookie 中缓存的角色名称的可靠性。 默认值为 CookieProtectionValueAll
,用于加密 Cookie 中的角色名称,并验证 Cookie 内容是否未更改。
属性
ApplicationName |
获取或设置要存储和检索其角色信息的应用程序的名称。 |
CacheRolesInCookie |
获取一个值,该值指示当前用户的角色是否已缓存在某个 Cookie 中。 |
CookieName |
获取在其中缓存角色名称的 Cookie 的名称。 |
CookiePath |
获取缓存角色名称的 Cookie 的路径。 |
CookieProtectionValue |
获取一个指示如何保护在 Cookie 中缓存的角色名称的值。 |
CookieRequireSSL |
获取一个值,该值指示角色名称 Cookie 是否需要 SSL 以便返回到服务器。 |
CookieSlidingExpiration |
指示是否将要定期重置角色名称 Cookie 的到期日期和时间。 |
CookieTimeout |
获取角色 Cookie 到期前的分钟数。 |
CreatePersistentCookie |
获取一个值,该值指示角色名称 Cookie 是基于会话的还是持久性的。 |
Domain |
获取角色名称 Cookie 的域的值。 |
Enabled |
获取或设置用来指示是否为当前 Web 应用程序启用角色管理的值。 |
MaxCachedResults |
获取要为用户缓存的角色名称的最大数量。 |
Provider |
获取应用程序的默认角色提供程序。 |
Providers |
获取 ASP.NET 应用程序的角色提供程序的集合。 |