继这里的教程:asp.net的MVC角色授权不工作
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组成员。在这种情况下,授权属性似乎正常工作,我可以看到视图。接下来,让我们说我将SomeGroup设置为一个我不是其成员的组......再次,事情似乎正在工作......我不被允许看到该视图。
我知道你在想什么:“降低这个蹩脚的问题......这个失败者希望从授权属性得到什么?”
问题是,在我的测试过程中,我把自己从我以前是其成员的AD组中移除。出于某种原因,当我将SomeGroup设置为等于该组时,我仍然能够看到该视图。
使用用户对象的IsInRole方法如下所示:
@User.IsInRole("MY_DOMAIN\\GroupINoLongerBelongTo")
输出 “真”。所以,某个地方仍然认为我在这个AD组。我们有三个域控制器,并且我已经检查了每个控制器,以验证我不在组中,以防万一控制器上的复制出现问题,并且这似乎不成问题。
我错过了什么? IIS缓存这种事情?我试过重新启动IIS并重新启动服务器无济于事......任何想法?
UPDATE:现在已解决。我在下面的@artem中提出了两个更改,但他们都没有工作。然后,我以一阵愤怒关掉了我的电脑,然后跺脚吃午饭。当我一小时后回来并给我的电脑供电时,事情开始奏效。所以,@ artme的建议和重新启动的结合提供了这个。
我猜绿色智利卷饼我吃午饭也不能被排除在外......
我知道这个问题已经解决了,但这里还有一个未知因素,所以这里是我的2美分:令牌中的组列表仅在登录时建立一次,然后进行缓存。所以如果您在AD中更改用户的组成员身份,则用户必须再次登录才能获取更新的组成员资格 – Menahem 2012-01-18 13:28:53
,感谢您提供其他信息! – seanicus 2012-01-19 01:40:52