【问题标题】:Set AD Roles name on web.config在 web.config 上设置 AD 角色名称
【发布时间】:2015-05-11 08:16:09
【问题描述】:

我正在使用 .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 上设置角色名称?

【问题讨论】:

  • 有什么类似的东西:
  • @DasDas 有些控制器需要一个角色,有些则不需要。
  • 为什么其他答案对您不起作用?
  • 我更新了我的问题,提供了更多细节。
  • 您能否向我们展示自定义授权代码的内部工作原理,或者它与您链接到的 SO 答案完全相同?

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


【解决方案1】:

也许这对你有用:

<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")

【讨论】:

    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 2010-10-23
    • 2019-12-10
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多