2014-02-28 39 views
0

在經過身份驗證的ASP.NET請求的生命週期中的某個點,IdentityUser從後備存儲(實體框架或其他)中檢索。我想參與這個過程。原因是用戶有一些集合屬性,我想通過一次調用數據庫來檢索這些屬性(使用IQueryable<T>.Include)。ASP.NET身份/ OWIN:自定義IPrinciple/IIdentity檢索

這是可能的ASP.NET身份?

回答

0

我想你可能想實現一個ClaimsAuthenticationManager

聲明身份驗證管理器提供的索賠處理管道在進入主要應用處理邏輯(過濾,驗證,擴展)權利要求集合的地方在執行到達你的應用程序代碼

因爲你要找的東西聽起來像extension給我。你重寫Authenticate方法有此簽名:

public virtual ClaimsPrincipal Authenticate(
    string resourceName, 
    ClaimsPrincipal incomingPrincipal 
) 
+0

我相信這是朝正確方向邁出的一步。我實際上發現了一些事情。當您登錄時,會創建一個cookie,其中包含一些聲明:您的角色(名稱)和您的用戶名。如果cookie存在且有效(即:可解密,簽名有效),則認爲您已登錄並確定。這意味着你的角色,甚至你在系統中的存在可能會過時!實際上沒有任何類型的數據庫調用被執行,因爲認證機制不知道ASP.NET身份。你可以自己輕鬆地嘗試。創建一個用戶,以該用戶身份登錄並刪除它。 – Sebazzz

0

你可能要重寫UserStore並覆蓋所有的findxxx方法,返回用戶不要添加任何包含了你想要的。

+0

這不是一個可行的解決方案,因爲它適用於所有用戶,或者我必須檢查每種方法是否包含任何內容。 – Sebazzz