【问题标题】:asp.net mvc role authorization not workingasp.net mvc 角色授权不起作用
【发布时间】:2011-05-25 17:15:04
【问题描述】:

按照这里的教程进行操作:

http://www.asp.net/mvc/tutorials/authenticating-users-with-windows-authentication-cs

我正在尝试实现 Windows 身份验证和授权。

本地主机上的 IIS 配置为使用 Windows 身份验证。以下是我的 web.config 中的相关元素:

      <authentication mode="Windows">

      </authentication>

      <authorization>
       <deny users="?" />
      </authorization>

在我的控制器中,我有这个:

    [Authorize(Roles = "MY_DOMAIN\\SomeGroup")]
    public ActionResult Index()
    {
        IList<CampusListViewModel> campusList = _campusRepository.List(true);
        return View("Index", campusList);
    }

现在,假设我将 SomeGroup 设置为等于我所属的 AD 组。在这种情况下,authorize 属性似乎起作用,并且允许我查看视图。接下来,假设我将 SomeGroup 设置为一个我不是其成员的组......再次,事情似乎正在工作......我不允许看到视图。

我知道你在想什么:“否决这个蹩脚的问题......这个失败者还想从授权属性中得到什么?”

问题是,在我的测试过程中,我将自己从一个我之前加入的 AD 组中删除了。出于某种原因,当我将 SomeGroup 设置为等于该组时,我仍然能够看到视图。

使用 User 对象的 IsInRole 方法,如下所示:

@User.IsInRole("MY_DOMAIN\\GroupINoLongerBelongTo")

输出“真”。所以,某处的某个地方,仍然认为我在那个广告组中。我们有三个域控制器,我检查了每个域控制器以验证我不在组中,以防万一控制器之间的复制出现问题,而这似乎不是问题。

我错过了什么? IIS会缓存这种东西吗?我试过重新启动 IIS 并重新启动服务器无济于事......有什么想法吗?

更新:现在已解决。我做了下面@artem 建议的两个更改,但它们似乎都不起作用。然后我一气之下关掉了电脑,然后跺着脚去吃午饭。当我一个小时后回来并打开我的电脑时,事情开始工作了。因此,@artme 的建议和重启解决了这个问题。

我猜我午餐吃的青辣椒卷饼也不能排除......

【问题讨论】:

  • 我知道这已经解决了,但是这里还有一个未知因素所以这里s my 2 cents: the list of groups in your token is only built once when you log in, then cached. so if you change a users AD 中的组成员,用户必须重新登录才能获得更新的组成员
  • 感谢您提供更多信息!

标签: asp.net-mvc iis-7 windows-authentication


【解决方案1】:

您是否将CacheRolesInCookie 设置为假?另外,请查看this solution

【讨论】:

  • 感谢您的回复。但是,我尝试了两种解决方案,但似乎都不起作用。
猜你喜欢
  • 2010-10-21
  • 2021-09-04
  • 2020-02-13
  • 2011-09-03
  • 1970-01-01
  • 2014-05-08
  • 2013-12-21
  • 2019-09-29
  • 1970-01-01
相关资源
最近更新 更多