IsInRole对工作组角色返回false

时间:2012-10-19 10:32:01

标签: asp.net asp.net-mvc-4 windows-authentication user-roles

我正在构建一个ASP.NET MVC4 Razor应用程序,我想使用Windows身份验证来限制对作为特定Windows组成员的用户的各种功能的访问。我正在使用未加入域的Windows 8 VM(名为MYVM)进行开发,但该应用程序将部署在将加入域的Win2008服务器上。

我已按如下方式配置web.config:

<authorization>
  <deny users="?" />
</authorization>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>

身份验证有效 - @ User.Identity.Name显示“MYVM \ MYUSERNAME”

但是,虽然我已将我的帐户添加到几个Windows群组,但对@ User.IsInRole(“GROUP_NAME”)的调用始终返回false。

我怀疑这是因为我的开发虚拟机没有加入域。有谁知道ASP.NET MVC中的Windows身份验证是否与工作组角色以及域角色一起使用?

修改

我发现我可以列举角色 - 这给出了:

?System.Web.Security.Roles.GetRolesForUser()
{string[9]}
[0]: "None"
[1]: "CONSOLE LOGON"
[2]: "Everyone"
[3]: "NT AUTHORITY\\This Organization"
[4]: "NT AUTHORITY\\INTERACTIVE"
[5]: "NT AUTHORITY\\Authenticated Users"
[6]: "NT AUTHORITY\\NTLM Authentication"
[7]: "LOCAL"
[8]: "BUILTIN\\Users"

但是,当我在“管理计算机”屏幕中查看我的群组成员资格时,我会在以下群组中:

Administrators
Users
GROUP_NAME

所以:@ User.IsInRole(“None”)返回true; @ User.IsInRole(“GROUP_NAME”)返回false。

GetRolesForUser从哪里获取组列表?

0 个答案:

没有答案