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

Van*_*nel 5 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>
Run Code Online (Sandbox Code Playgroud)

这是我的Authorize属性:

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

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

我测试了这个SO答案,但它对我不起作用.我已将此部分添加到web.config文件中:

<roles>
  <add key="Role1" value="MyDomain\MyUploadRole" />
  <add key="Role2" value="MyDomain\Another role" />
</roles>
Run Code Online (Sandbox Code Playgroud)

然后,我在控制器上改变它:

[Authorize(Roles = @"Role1")]
public class UploadController : Controller
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

并且Internet Explorer要求我的凭据,但我得到了未经授权的响应.

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

小智 0

也许这对你有用:

<configuration>    
<system.web>
    <authentication mode="Windows"/>
    <authorization>
     <allow roles="MyDomain\MyUploadRole"/>
     <deny users="?"/>
    </authorization>
    <identity impersonate="true"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)

在您的代码中,您可以检查用户是否具有如下角色:

HttpContext.Current.User.IsInRole("MyDomain\MyUploadRole")
Run Code Online (Sandbox Code Playgroud)