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

本文关键字:Windows 帐户 适用于 不适用 角色 授权 MVC | 更新日期: 2023-09-27 17:57:13

我有一个将在内部使用的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,一个人只能看到OnePage而不是AllPage

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

我尝试过的事情:

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

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

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

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

    所以我觉得自己有点白痴。 事实证明,问题根本不出在我的代码上 - 而是与维护AD组的人有关。他们给了我错误的组名,这就是为什么它从未进行身份验证的原因。 一旦我输入了正确的组名,一切都解决了。

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