asp.net mvc角色授权不起作用

时间:2011-05-25 17:15:05

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

按照这里的教程:

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

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

Localhost上的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")

输出“TRUE”。所以,在某个地方,仍然认为我在那个AD组。我们有三个域控制器,我已经检查了每个域控制器,以验证我不在组中,以防万一在控制器上复制出现问题,这似乎不是问题。

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

更新:现在已解决此问题。我做了下面@artem建议的两个更改,但它们似乎都不起作用。然后,我开始关闭我的计算机,然后st脚吃午饭。当我一小时后回来并打开电脑时,事情就开始了。所以,@ artme的建议和重新启动的某些组合已经解决了这个问题。

我想我在午餐时吃的绿色辣椒卷饼也不能排除......

1 个答案:

答案 0 :(得分:1)

CacheRolesInCookie设置为false吗?另外,请查看this solution