在web.config上设置AD角色名称

时间:2015-05-11 08:16:10

标签: c# asp.net asp.net-mvc active-directory

我正在使用.NET Framework 4.5.1和C#开发ASP.NET MVC 5应用程序。

我使用Windows authentication允许某些用户访问我的控制器。这是我的web.config文件:

<system.web>
  <compilation debug="true" targetFramework="4.5.1" />
  <httpRuntime targetFramework="4.5.1" />
  <authentication mode="Windows" />
  <authorization>
    <deny users="?" />
  </authorization>
  <roleManager enabled="true" defaultProvider="WindowsProvider">
    <providers>
        <clear />
        <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
    </providers>
</roleManager>
</system.web>

这是我的Authorize属性:

[Authorize(Roles = @"MyDomain\MyUploadRole")]
public class UploadController : Controller
{
   // ...
}

我想将字符串@"MyDomain\MyUploadRole"添加到web.config,但我不知道该怎么做。

我已对此SO answer进行了测试,但它并不适用于我。我已将此部分添加到web.config文件中:

<roles>
  <add key="Role1" value="MyDomain\MyUploadRole" />
  <add key="Role2" value="MyDomain\Another role" />
</roles>

然后,我在控制器上更改了这个:

[Authorize(Roles = @"Role1")]
public class UploadController : Controller
{
   // ...
}

Internet Explorer要求我的凭据,但我得到了未经授权的回复。

如何在web.config上设置角色的名称?

1 个答案:

答案 0 :(得分:0)

这可能会对你有用:

<configuration>    
<system.web>
    <authentication mode="Windows"/>
    <authorization>
     <allow roles="MyDomain\MyUploadRole"/>
     <deny users="?"/>
    </authorization>
    <identity impersonate="true"/>
</system.web>

在您的代码中,您可以检查用户是否处于以下角色:

HttpContext.Current.User.IsInRole("MyDomain\MyUploadRole")