我對一個(現場還沒有)網站有一個奇怪的問題,我不知道問題的原因是什麼。停止重用ASP.NET_sessionId
採取這樣的場景:
- 我登錄與用戶A在網站上。
- 我打開F12並複製ASP.NET_SessionId和.AspNet.ApplicationCookie的Cookie值
UserA註銷。這個代碼塊被執行。
HttpContext.GetOwinContext().Authentication.SignOut(); Session.Clear(); Session.Abandon(); Session.RemoveAll(); Request.Cookies["ASP.NET_SessionId"].Expires = DateTime.UtcNow.AddDays(-1d); Response.Cookies["ASP.NET_SessionId"].Value = ""; Response.Cookies.Add(Request.Cookies["ASP.NET_SessionId"]); return Redirect($"{AppSettings.PublicLandingPage}/loggedout");
用戶B日誌中
- 我粘貼到第二步用戶B新的cookie的值值
- 我瀏覽到該網站
- 我的其他網頁現在登錄爲用戶A
的問題,我現在有:
- 這是預期的行爲?如果不是,這個問題的原因是什麼?
- 有什麼辦法在服務器端殺死會話嗎?在我的web.config中,會話超時設置爲10分鐘,站點成功註銷,但是當重新登錄任何用戶並複製'舊'cookie數據時,會話仍然似乎仍然活着,即使在48小時後。
- 我還沒有嘗試過,但如果我在另一個IP地址上執行這些步驟,我是否可以期待相同的行爲?有沒有辦法阻止這個?
問候!
Hi Ondrej!你是絕對正確的。會話與認證部分無關。我們目前有https https專用cookie。 不使用基於IP的cookie是一個好評。 我仍然無法得到我的頭唯一的東西是加密用戶ID的票。看起來合乎邏輯的是,只要用戶登錄,票證在時間戳期間有效,但是當用戶註銷時,我希望這張票據將失效,因此您不能再使用該票證了?但正如你所提到的那樣,這是不可能的,因爲沒有任何東西存儲在服務器端...... – Miscode