Asp.net mvc 4 使用active directory角色提供程序MVC4进行授权

Asp.net mvc 4 使用active directory角色提供程序MVC4进行授权,asp.net-mvc-4,web-config,authorization,roleprovider,Asp.net Mvc 4,Web Config,Authorization,Roleprovider,我正在构建一个MVC4应用程序,供公司内部使用。我使用windows身份验证,这很好,但在使用Active Directory组作为角色进行授权时遇到了问题 我的Web.config如下所示: <authentication mode="Windows" /> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"> <providers>

我正在构建一个MVC4应用程序,供公司内部使用。我使用windows身份验证,这很好,但在使用Active Directory组作为角色进行授权时遇到了问题

我的Web.config如下所示:

<authentication mode="Windows" />        
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
  <providers>
    <clear />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>        
<authorization>
  <deny users="?" />    
</authorization>
[Authorize(Roles = "Domain\\Group")]
public ActionResult Create()
{
    return View();
}
但当我使用角色时,它只是不允许该组中的用户访问此操作:

[Authorize(Roles = @"Domain\Group")]
public ActionResult Create()
{
    return View();
}
我还尝试指定没有域的组,正如我在其他回复中看到的那样,但没有成功。。。我想我在Web.config中遗漏了一些东西,但我不确定是什么

我避免使用自定义角色提供程序,因为MVC4应该在没有自定义角色提供程序的情况下实现这一点(或者至少我是这么认为的)

有人能帮我吗


提前谢谢

我找到了问题所在。在阅读了一些关于machine.config的信息后,我检查了是否已经应用了正确的配置

最终我让它像这样工作:

<authentication mode="Windows" />        
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
  <providers>
    <clear />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>        
<authorization>
  <deny users="?" />    
</authorization>
[Authorize(Roles = "Domain\\Group")]
public ActionResult Create()
{
    return View();
}
问题是我打字的方式


我希望这能帮助其他人。

啊,双反斜杠!!我已经做了几个小时了-Cheers@D.Mac-其标准C#字符串格式/转义:“域\\组”或@“域\组”。是的,这种反弹不是原因,也不是语义上的差异,因为这只是语法上的问题。现在,使用覆盖WindowsTokenRoleProvider类的自定义角色提供程序来管理有点不同,但它的使用方式完全相同。在启用Windows身份验证和正确的提供程序(通常是NTLM,但在您的环境中可能会有所不同)后,我会查找IIS配置中的错误。能够回答这个问题的其他问题是:用户的身份验证正确吗?不,这对我也不适用。同样的问题。似乎只有用户才能工作。呃,这是一个愚蠢可笑的问题,似乎没有人知道答案。