【问题标题】:Windows Authentication MVC [Authoize(Roles = "two words")] Not WorkingWindows 身份验证 MVC [Authorize(Roles = "two words")] 不工作
【发布时间】:2014-09-25 18:20:56
【问题描述】:

我正在为我的公司开发一个 Intranet 站点并且我正在使用 Windows 身份验证。我的问题是,当我尝试添加一个角色,该角色有两个由空格分隔的单词时,我会弹出 Windows 安全模式弹出窗口,询问我的用户名和密码。但是,如果角色只有一个词,它就完美了。

Active Directory 中的示例组名称:以下示例中的“人力资源”、“项目经理”、“教育”。

有效的示例:

 [Authorize(Roles = "Education")]

不起作用的示例:

[Authorize(Roles = "Human Resources")]
[Authorize(Roles = "Project Managers")]

我试过了:

[Authorize(Roles = "Human Resources")]
[Authorize(Roles = "Human_Resources")]
[Authorize(Roles = "HumanResources")]
[Authorize(Roles = @"DOMAIN\Human Resources")]
[Authorize(Roles = @"DOMAIN\HumanResources")]
[Authorize(Roles = @"DOMAIN\Human_Resources")]

除了进入 Active Directory 并将我的用户组更改为不包含空格之外,我还能做些什么吗?

【问题讨论】:

    标签: asp.net-mvc active-directory windows-authentication


    【解决方案1】:

    我学到了两件事。如果您将自己添加到组中,则必须注销并重新登录到您的域帐户。 Windows Auth 正在查看我所属角色的缓存版本。Domain Admins 是一个不允许在您的代码中使用此 [Authorize(Roles = "Domain Admins")] 的组。

    【讨论】:

      【解决方案2】:

      这里有一些解决这个问题的想法:

      1. 无需重启,只需通过 web.config 拒绝自己访问即可,例如 <deny users="*" /> 重新打开浏览器得到 401,删除拒绝语句并重新启动浏览器并刷新角色缓存。 还有:
      2. 检查并仔细检查并再次检查“角色名称”是否正确
      3. 带有域\角色=“域\角色”的前缀
      4. 使用时带空格的角色可以正常工作:

      c#

      public static class AppRoles
      {
          public const string Manager     = @"domain\App Manager";
          public const string Admin       = @"domain\App Admin";
      }
      
      [Authorize(Roles = AppRoles.Admin)] 
      public class MyAbcController : Controller
      {
          //code
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-11
        • 2019-02-16
        • 2021-01-11
        • 2015-11-15
        • 2017-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多