繼這裏的教程: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