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 角色的应用程序 Web.config 文件,以及用于 SqlRoleProvider 在 SQL Server 数据库中存储成员身份和角色信息。 用户通过表单身份验证进行身份验证,并且仅允许管理员角色中的用户访问应用程序。
<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 应用程序的不同部件或功能的访问权限。 例如,员工应用程序可能具有经理、员工、董事等角色,其中为每个角色指定了不同的特权。
用户可以属于多个角色。 例如,如果你的网站是一个讨论论坛,则某些用户可能同时担任“成员”和“审查者”角色。 可以定义每个角色以在站点上具有不同的权限,并且两个角色中的用户将拥有这两组权限。
若要为 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 Membership 类一起使用。
若要以编程方式验证角色成员身份,可以将类或Page.User属性与方法一Roles起使用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 中缓存的角色名称的可靠性。 默认值 CookieProtectionValue 是 All加密 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 应用程序的角色提供程序的集合。 |
方法
| 名称 | 说明 |
|---|---|
| AddUsersToRole(String[], String) |
将指定的用户添加到指定角色。 |
| AddUsersToRoles(String[], String[]) |
将指定的用户添加到指定的角色。 |
| AddUserToRole(String, String) |
将指定用户添加到指定角色。 |
| AddUserToRoles(String, String[]) |
将指定的用户添加到指定的角色。 |
| CreateRole(String) |
向数据源添加新角色。 |
| DeleteCookie() |
删除缓存角色名称的 Cookie。 |
| DeleteRole(String, Boolean) |
从数据源中删除角色。 |
| DeleteRole(String) |
从数据源中删除角色。 |
| FindUsersInRole(String, String) |
获取指定角色中的用户列表,其中用户名包含要匹配的指定用户名。 |
| GetAllRoles() |
获取应用程序的所有角色的列表。 |
| GetRolesForUser() |
获取当前登录用户所登录的角色的列表。 |
| GetRolesForUser(String) |
获取用户在其中的角色的列表。 |
| GetUsersInRole(String) |
获取指定角色中的用户列表。 |
| IsUserInRole(String, String) |
获取一个值,该值指示指定的用户是否处于指定角色中。 API 仅用于在 ASP.NET 请求线程的上下文中调用,在该批准的用例中,它是线程安全的。 |
| IsUserInRole(String) |
获取一个值,该值指示当前登录的用户是否处于指定角色。 API 仅用于在 ASP.NET 请求线程的上下文中调用,在该批准的用例中,它是线程安全的。 |
| RemoveUserFromRole(String, String) |
从指定角色中删除指定用户。 |
| RemoveUserFromRoles(String, String[]) |
从指定角色中删除指定用户。 |
| RemoveUsersFromRole(String[], String) |
从指定角色中删除指定的用户。 |
| RemoveUsersFromRoles(String[], String[]) |
从指定角色中删除指定的用户名。 |
| RoleExists(String) |
获取一个值,该值指示指定的角色名称是否已存在于角色数据源中。 |