2010-07-26 34 views
0

貯藏ASP.NET MVC 2的會話數據我有類似這樣的實現:對於經常需要的用戶數據的快速訪問Better way of doing strongly-typed ASP.NET MVC sessions在登錄

...但我有兩個問題:

1)會有用戶登錄的時間,但會話無效或重置?我一直認爲,只要用戶登錄,他們的會話是有效的...

2)我想在用戶登錄時填充數據,但我不知道如何訪問該數據在登錄。在AccountController中有一個LogOn方法,但雖然有一個FormsService.SignIn方法,但我沒有看到它實際登錄的用戶,因爲Membership.GetUser()返回null,直到頁面重定向後...

我猜我做錯了,我不應該嘗試做一個通用的方法來檢索會話,而是將單獨的方法映射到會話值,並手動從用戶數據重新填充它們如果它們是空的。

你覺得呢?

回答

1
  1. 會話和身份驗證之間有區別。會話在整個應用程序中都可用,即使用戶是而不是登錄。
  2. 在默認的ASP.NET MVC 2.0項目模板中,您可以在撥打FormsService.SignIn之後立即填充會話數據。這是用戶憑證已被驗證的地方,並且驗證cookie將寫入響應。如果需要,您可以使用提供的用戶名從數據庫獲取任何用戶信息。
+0

非常感謝 – SelAromDotNet 2010-07-27 02:26:44

+0

儘管如果會話以某種方式被破壞(例如web.config文件發生更改),用戶仍將保持登錄狀態,但存儲在SignIn中的會話數據將會消失。如果有更好的方法來嘗試讓某些服務/類嘗試從會話數據中檢索(如果可能),但如果它不能,則會退回到數據庫並將數據恢復到會話數據? – 2011-05-05 05:50:50