2011-05-25 135 views
2

继这里的教程: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的建议和重新启动的结合提供了这个。

我猜绿色智利卷饼我吃午饭也不能被排除在外......

+1

我知道这个问题已经解决了,但这里还有一个未知因素,所以这里是我的2美分:令牌中的组列表仅在登录时建立一次,然后进行缓存。所以如果您在AD中更改用户的组成员身份,则用户必须再次登录才能获取更新的组成员资格 – Menahem 2012-01-18 13:28:53

+0

,感谢您提供其他信息! – seanicus 2012-01-19 01:40:52

回答

1

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

+0

感谢您的回复。但是,我尝试了两种解决方案,但都没有成功。 – seanicus 2011-05-25 18:47:16

+0

你有没有发现什么是错的? – 2015-10-11 15:29:52