[英]Mvc C# session lost after multiple login
我正在為多個用戶創建一個簡單的網站。 現在我正在嘗試制作每個人的個人資料,以便他們登錄時可以看到他們的數據。 問題是,一旦用一個用戶登錄,而我用另一個用戶登錄,我的 session 就會被“覆蓋”,新用戶就會變成舊用戶。 所以我想我搞砸了 session 部分。
我告訴你我做了什么。
在登錄 controller 中,我調用登錄 function,傳遞用戶名和密碼。
然后我驗證數據庫的用戶憑據,如果用戶已經過身份驗證,我會這樣做:
新會話 = 新用戶會話();
new_session.SessionSet(obj);
在“SessionSet”中,我只是初始化了一些我需要的變量:
this.id_account = obj.id_account;
this.id_user = obj.id_user;
this.username = obj.username;
此時我將 new_session 返回到 Controller,如果不是 null,我只需將其添加到 session:
Session.Add("user", new_session);
現在的問題是我怎樣才能得到這個特定的 object 形式:視圖、類和控制器? 如果我寫在一個視圖中:
(((UserSession)Session["user"]).username)
我只得到“用戶” object 所以當兩個用戶同時登錄時,session 總是指“用戶”之一。
我用谷歌搜索了它,但我找不到適合我需要的答案。
或在 session 中寫入數據超時
if(Session["users"] != null)
{
List<UserSession> users = (List<UserSession>)Session["users"];
var finduser = users.Where(a=> a.id_user == newUser.id_user).FirstOrDefault();
if(findUser == null)
{
//add user into session
}
}
else
{
Session.Add("users",newUser);
}
和 web.config 文件設置超時注銷和 session 相等
<sessionState mode="InProc" timeout="20"></sessionState>
<authentication mode="Forms">
<forms loginUrl="/Pages/Default" timeout="20" slidingExpiration="true" />
</authentication>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.