【问题标题】:MVC Role Authorization not working for windows accountsMVC 角色授权不适用于 Windows 帐户
【发布时间】:2015-09-06 16:22:12
【问题描述】:

我有一个将在内部使用的 Web 应用程序,它通过 Windows 身份验证进行身份验证。 <authentication mode="Windows" /> 在网络配置中

我有两个角色 - All 和 One - 可以访问应用程序中的不同页面:

[HttpGet]
public ActionResult Home()
{
    return View();
}

[HttpGet]
[Authorize(Roles = "All")]
public ActionResult AllPage()
{
    return View();
}

[HttpGet]
[Authorize(Roles = "All, One")]
public ActionResult OnePage()
{
    return View();
}

理想情况下,每个人都可以看到主页,所有人都可以看到 AllPage 和 OnePage,一个人只能看到 OnePage 而不能看到 AllPage

我有两个用户,AllUser 和 OneUser,每个用户都在各自的组中。问题是,无论谁登录,一切都是未经授权的。授权永远不会成功。我已经在网上尝试了很多关于如何设置的教程,但都没有奏效。这真的不应该那么复杂,但我不能让它为我的生活工作。

我尝试过的事情:

  • 在组前面指定域(即Roles = "Domain\\All"
  • 仅在 Web 配置中设置授权
  • 在 Web 配置和 MVC 控制器中设置授权
  • 如果有人对此有一些指导或帮助,我将不胜感激。

    【问题讨论】:

      标签: c# asp.net-mvc authorization windows-authentication roles


      【解决方案1】:

      要启用角色管理,请查看此链接:http://www.codeproject.com/Articles/799571/ASP-NET-MVC-Extending-ASP-NET-Identity-Roles

      对于 Windows 身份验证,您需要模拟:https://msdn.microsoft.com/en-us/library/ff647405.aspx

      【讨论】:

      • 您不需要冒充。只要服务器加入域。
      【解决方案2】:

      所以我觉得自己有点像个白痴。原来问题根本不在于我的代码 - 在于维护 AD 组的人。他们给了我错误的组名,这就是它从未通过身份验证的原因。一旦我输入了正确的组名,一切都解决了。

      值得一提的是,因为这些是 Active Directory 环境中的组,所以我确实必须在组名前指定域 - 但除此之外,代码还不错。我原以为这很简单,因此我对它为什么不起作用感到沮丧。

      【讨论】:

        猜你喜欢
        • 2011-05-17
        • 1970-01-01
        • 2020-12-09
        • 2014-05-08
        • 2020-03-13
        • 2020-08-27
        • 2012-12-02
        • 2019-12-08
        • 2010-10-21
        相关资源
        最近更新 更多