簡體   English   中英

mvc C# session 多次登錄后丟失

[英]Mvc C# session lost after multiple login

我正在為多個用戶創建一個簡單的網站。 現在我正在嘗試制作每個人的個人資料,以便他們登錄時可以看到他們的數據。 問題是,一旦用一個用戶登錄,而我用另一個用戶登錄,我的 session 就會被“覆蓋”,新用戶就會變成舊用戶。 所以我想我搞砸了 session 部分。

我告訴你我做了什么。

  1. 在登錄 controller 中,我調用登錄 function,傳遞用戶名和密碼。

  2. 然后我驗證數據庫的用戶憑據,如果用戶已經過身份驗證,我會這樣做:

    新會話 = 新用戶會話();

    new_session.SessionSet(obj);

在“SessionSet”中,我只是初始化了一些我需要的變量:

this.id_account          = obj.id_account;
this.id_user             = obj.id_user;
this.username            = obj.username;
  1. 此時我將 new_session 返回到 Controller,如果不是 null,我只需將其添加到 session:

    Session.Add("user", new_session);

現在的問題是我怎樣才能得到這個特定的 object 形式:視圖、類和控制器? 如果我寫在一個視圖中:

(((UserSession)Session["user"]).username)

我只得到“用戶” object 所以當兩個用戶同時登錄時,session 總是指“用戶”之一。

我用谷歌搜索了它,但我找不到適合我需要的答案。

  1. 獲取數據庫 UserSession 數據
  2. 查看具有此 useID 的用戶已登錄
  3. 如果用戶登錄 {不允許登錄} 否則 {允許登錄}

或在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM