[英]Stop reusing the ASP.NET_sessionId
我有一個(不是現場)網站的奇怪問題,我不知道問題的原因是什么。
采取這種情況:
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");
UserB登錄。
我現在的問題:
問候!
您將身份驗證與會話混合 - 這些是單獨的概念 - 您可以擁有活動會話而無需進行身份驗證或在沒有活動會話的情況下進行身份驗證。
至於你為何經過認證 - 這是設計的。 身份驗證cookie包含所謂的票證 - 通常它由加密的UserID,Timestamp(在時間戳到期后cookie無用)和其他一些信息組成。 服務器內存中沒有任何內容 - 因此您可以擁有負載平衡器/ Web服務器場,並且可以無縫地對用戶進行身份驗證。 Cookie(基於加密時間戳)可以使用絕對過期或滑動過期。 如果使用滑動過期服務器(一旦瀏覽器發送請求和滑動過期時間的一半已經過去)用新的時間戳替換auth cookie。
如果您擔心cookie被盜 - 請先檢查您使用https和僅限http的cookie :)如果您需要加強安全性,請注意基於IP的cookie保護會導致可用性問題 - 例如當您搬家時從一個wifi到另一個用筆記本電腦/手機 - 你已經退出,還有其他東西你可以用作瀏覽器指紋 - 比如用戶代理字符串等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.