2014-03-28 261 views
5

我有一個關於ASP.NET身份提供者的問題。 我製作了一個系統,您可以在用戶和角色上執行CRUD操作,但我遇到了問題。如果我要刪除已經過身份驗證(已登錄)的用戶,他仍然可以在網站上執行操作,因爲他仍然在其本地計算機上保留身份驗證和授權cookie。當用戶註銷時,他不再能夠訪問該站點。身份是身份驗證Cookie

我的問題: 有沒有辦法讓它如此,當一個頁面被請求時,它會檢查用戶是否存在於數據庫中?另一種方法可能是不存儲「角色」cookie並檢查(通過數據庫)用戶是否具有訪問頁面所需的角色。我不知道如何配置這個。任何幫助表示讚賞。

+0

你可以編寫自己的自定義屬性,並用它來裝飾類/方法 – Jonesopolis

回答

2

我們特別爲這個場景添加了SecurityStampValidator,基本上你可以配置CookieMiddleware來檢查用戶是否每隔一段時間都仍然有效。

看到這個問題:What is the SecurityStamp

+0

所以,我一直試圖通過閱讀下面的示例來獲得這個工作:'https://aspnet.codeplex.com/SourceControl/最新的#Samples/Identity/Identity-PasswordPolicy/Identity-PasswordPolicy /'在你的文章中,你應該說我應該調用'UserManager.UpdateSecurityStampAsync(userId)'方法來更新用戶的安全印章。我在我的Startup類中實現了OnValidateIdentity方法。現在我的問題是:我將不得不以某種方式定製'ApplicationUserManager'類來獲得這個工作嗎?我想在第三方用戶被刪除時進行驗證檢查。 – Andreas

+0

查看http://stackoverflow.com/questions/22682663/how-to-hold-the-cookies-claims-updated-with-mcv5-owin/22796932#22796932 –

1

我相信,如果你在你的web.config中設置cacheRolesInCookie="false"標籤<roleManager>標籤,你會得到期望的效果。然後,您將能夠處理不再存在於數據庫中的用戶,並根據需要重定向(ex)用戶。