3

我正在构建一个 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 从哪里获取组列表?

4

0 回答 0