MVC角色授权不适用于Windows帐户

时间:2015-06-20 21:51:03

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

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

我有两个角色 - 全部和一个 - 可以访问应用中的不同页面:

[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,而One只能看到OnePage而不是AllPage

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

我尝试过的事情:

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

    2 个答案:

    答案 0 :(得分:0)

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

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

    答案 1 :(得分:0)

    所以我觉得自己有点白痴。事实证明,问题根本不在于我的代码 - 这是维护AD组的人。他们给了我错误的组名,这就是为什么它从未被认证过。一旦我输入正确的组名,一切都会成功。

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