2012-04-20 68 views
1

我已經實現所概述here定製的主要方式下第5步:使用自定義用戶Application_OnPostAuthenticateRequest和自定義用戶緩存

我然後從數據庫中檢索用戶的憑據以定製的主要用途,但這會導致對每個請求都進行數據庫調用,所以很自然地,答案就是將我的用戶對象保存在Session或Cache中。

但是,它會出現HttpContext.Current.Session不能從內 Application_OnPostAuthenticateRequest訪問,因此緩存似乎是去

的問題是這兩個答案herehere報價矛盾的建議的方式。第一個建議

不,不使用HttpCurrent.Current.Cache存儲用戶特定的信息作爲緩存是所有用戶共同的,你會得到衝突。請使用HttpContext.Current.Session,因爲這將特定於用戶。

,第二個建議

使用高速緩存,而不是會議

因此,這是優選的方法?
如果Session是我如何將我的用戶對象從Application_OnPostAuthenticateRequest方法放入Session對象的方法。
如果Cache是前進的方向我會面對哪些問題?例如,Cache中的項目是否有時間限制? (我知道通過使用來自用戶對象的唯一密鑰來解決潛在的衝突)

回答

3

不確定在寫入票證時,您仍然在尋找答案,但存儲身份驗證信息的最佳位置是在Ticket.UserData屬性中。

我假設您是否正在使用自定義提供程序來重寫SetAuthCookie方法。

如果是這種情況,那麼該方法將讓您傳遞額外的信息進行存儲。存儲諸如友好用戶名,角色或其他身份驗證詳細信息是很常見的。

請參閱此鏈接Setting UserData in Authentication Cookie

+0

如果您的應用程序使用Windows身份驗證,也沒有票。 – Josh 2015-02-10 16:01:57