在經過身份驗證的ASP.NET請求的生命週期中的某個點,IdentityUser
從後備存儲(實體框架或其他)中檢索。我想參與這個過程。原因是用戶有一些集合屬性,我想通過一次調用數據庫來檢索這些屬性(使用IQueryable<T>.Include
)。ASP.NET身份/ OWIN:自定義IPrinciple/IIdentity檢索
這是可能的ASP.NET身份?
在經過身份驗證的ASP.NET請求的生命週期中的某個點,IdentityUser
從後備存儲(實體框架或其他)中檢索。我想參與這個過程。原因是用戶有一些集合屬性,我想通過一次調用數據庫來檢索這些屬性(使用IQueryable<T>.Include
)。ASP.NET身份/ OWIN:自定義IPrinciple/IIdentity檢索
這是可能的ASP.NET身份?
我想你可能想實現一個ClaimsAuthenticationManager
聲明身份驗證管理器提供的索賠處理管道在進入主要應用處理邏輯(過濾,驗證,擴展)權利要求集合的地方在執行到達你的應用程序代碼
因爲你要找的東西聽起來像extension
給我。你重寫Authenticate
方法有此簽名:
public virtual ClaimsPrincipal Authenticate(
string resourceName,
ClaimsPrincipal incomingPrincipal
)
你可能要重寫UserStore並覆蓋所有的findxxx方法,返回用戶不要添加任何包含了你想要的。
這不是一個可行的解決方案,因爲它適用於所有用戶,或者我必須檢查每種方法是否包含任何內容。 – Sebazzz
我相信這是朝正確方向邁出的一步。我實際上發現了一些事情。當您登錄時,會創建一個cookie,其中包含一些聲明:您的角色(名稱)和您的用戶名。如果cookie存在且有效(即:可解密,簽名有效),則認爲您已登錄並確定。這意味着你的角色,甚至你在系統中的存在可能會過時!實際上沒有任何類型的數據庫調用被執行,因爲認證機制不知道ASP.NET身份。你可以自己輕鬆地嘗試。創建一個用戶,以該用戶身份登錄並刪除它。 – Sebazzz