我在我的應用程序中使用Session
來存儲一些數據,如用戶名(寫hello,...)等等。另外,我使用FormsAuthentication
驗證用戶,所以控制器有這樣的代碼:在asp.net中存儲會話數據mvc
protected void SetAuthCookie(int userId)
{
FormsAuthentication.SetAuthCookie(userId.ToString(), true);
User user = Repositories.UserRepository.GetUserById(userId);
Session["name"] = user.Name;
Session["email"] = user.Email;
Session["balance"] = user.TotalBalance + "/" + user.ActiveBalance;
Session["isConfirmed"] = user.IsConfirmed;
Session["phone"] = user.Phone;
}
所以,當我的一些代碼後重新啓動應用程序改變會話數據被破壞,但用戶通過身份認證,所以我有很不好的情況,我想解決它。一方面,我可以在某處創建代碼,這將檢查會話數據是否正常,否則刷新它。另一方面,我可能會錯過一些以正確的方式存儲這些數據的技術嗎?
在這種情況下最好的解決方案是什麼?
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
Cookie在會話中持續存在。這裏有什麼問題?當您檢測到cookie時,請設置會話值。 – DLeh 2014-11-03 13:24:08
另外,使用會話不建議與MVC。 MVC意味着儘可能無狀態,依靠會話將打破這一點。 – DLeh 2014-11-03 13:25:15
有時,用戶通過身份驗證,但會話數據不再存在。發生這種情況,當我在代碼更改後重新啓動應用程序時,在其他情況下我害怕這種情況 – lenden 2014-11-03 13:25:41