2011-05-25 169 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