User.IsInRole返回false

时间:2010-03-15 23:01:25

标签: asp.net .net security

我的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,并传递任何这些组的名称,我总是得到一个假的。

谁能告诉我我做错了什么?

由于

1 个答案:

答案 0 :(得分:7)

我们需要查看你的web.config。如何处理角色?角色管理员是否已启用?

修改
您需要使用以下格式:

User.IsInRole(@"DOMAINNAME\rolename")

您要离开域名。如果仍然无效,请确保您已在web.config中设置了角色提供程序:

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>

此信息直接来自MSDN。查看“检查代码中的角色成员身份”部分。它就在那里。