我的ASP.NET应用正在使用Windows身份验证。如果我运行以下代码:
WindowsIdentity wi = (WindowsIdentity)User.Identity;
foreach (IdentityReference r in wi.Groups)
{
ListBox1.Items.Add(r.Translate (typeof (NTAccount)).Value);
}
if (User.IsInRole ("Everyone"))
Label1.Text = "Is in role";
列表框将包含用户所属的每个组的名称。如果我然后拨打User.IsInRole
,并传递任何这些组的名称,我总是得到一个假的。
谁能告诉我我做错了什么?
由于
答案 0 :(得分:7)
我们需要查看你的web.config。如何处理角色?角色管理员是否已启用?
修改强>
您需要使用以下格式:
User.IsInRole(@"DOMAINNAME\rolename")
您要离开域名。如果仍然无效,请确保您已在web.config中设置了角色提供程序:
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>
此信息直接来自MSDN。查看“检查代码中的角色成员身份”部分。它就在那里。