我正在開發一個Asp.net(MVC,但這並不重要)應用程序。我有一個自定義的IHttpModule負責PostAuthenticateRequest以更改用戶主體的身份。請求之間持久化/緩存數據 - 常用方法
我在用戶登錄時將用戶ID和用戶名存儲在身份驗證cookie中。我有一個IUser(由DAO和Business Objects層實現,每個都有自己的額外成員),我需要所有的Business Service類。當用戶需要任何東西時,我必須提供IUser對象實例(通常來自Business Objects層),因此從身份驗證票證提供ID是不夠的。
所以我在想如何以及在哪裏最好堅持登錄用戶的IUser數據?
- 我不想每次從數據庫中獲取它(基於身份驗證票證的用戶ID數據)
- 我不能把它存儲在會話,因爲我不得不在屋裏PostAuthenticateRequest,其中會話ISN」工作準備好面對尚未
- 我希望所有的功能,我自定義的內封裝的IHttpModule
的選擇,我看到:
- 緩存
- 餅乾
- (會話) - 由PostAuthenticateRequest移動到PostAcquireRequestState事件和變更主/身份出現,但我想避免這種
過程似乎使事情變得複雜是:
- 用戶登錄項,用戶數據是從DB中取出並以某種方式持續購買請求
- 用戶登錄手續,用戶數據已經被從持久介質自動魔法除去LY
- 用戶更改自己的配置文件,用戶數據將被廢棄,並從DB
我wan't這一切要由HTTP模塊自動處理(如果可能的話)消除開發人員的錯誤重讀的下一個請求忘記重置這些東西。
我也不想要的是寫/讀一些硬編碼的變量/鍵,並在應用程序的其他部分操縱它們。這隻會造成技術債務。
問題
- 你有什麼建議?
- SO如何在請求之間保持用戶數據?