如果您已经在您的站点中使用 SQL Server 连接了身份验证和成员资格,这对您来说将很容易。只需按照以下步骤操作:
在 sql server 上创建角色存储
aspnet_regsql -S .\SQLExpress -E -A r
-S specifies the server, which is (.\SQLExpress) in this example.
-E specifies to use Windows authentication to connect to SQL Server.
-A r specifies to add only the role provider feature.
为角色提供者添加连接字符串:
<connectionStrings>
<add name="MyLocalSQLServer"
connectionString="Initial Catalog=aspnetdb;
data source=.\sqlexpress;Integrated Security=SSPI;" />
</connectionStrings>
添加角色管理器:
<system.web>
<roleManager enabled="true" defaultProvider="MySqlRoleProvider" >
<providers>
<clear/>
<add name="MySqlRoleProvider" connectionStringName="MyLocalSQLServer"
applicationName="MyAppName"
type="System.Web.Security.SqlRoleProvider" />
</providers>
</roleManager>
</system.web>
现在你可以在你的页面中使用基于角色的东西(假设你已经启用了身份验证 [windows 或 forms])
测试 ASPX:
All Defined Roles: <asp:Lable id="lblAllRoles" runat="server" /><br/>
Your Roles: <asp:label id="lblMyRoles" runat="server" /><br/>
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
//here we are supposing that user is already authenticated
StringBuilder sb=new StringBuilder();
//gets roles for currently authenticated user
var roles = Roles.GetRolesForUser();
foreach (var v in roles)
sb.Append(", " + v);
lblMyRoles.Text = sb.ToString();
sb.Remove(0,sb.Length);
string [] allRoles = Roles.GetAllRoles();
foreach(var v in allRoles)
sb.Append(", " + v);
lblAllRoles.Text = sb.ToString();
}
同样,您可以使用它Role.IsUserInRole("ROLE_NAME")
来检查用户是否被分配了特定角色。