【发布时间】:2017-11-11 18:04:54
【问题描述】:
我在一个(尚未上线的)网站上遇到了一个奇怪的问题,我不知道问题的原因是什么。
以这个场景为例:
- 我使用 userA 登录网站。
- 我打开 F12 并复制 ASP.NET_SessionId 和 .AspNet.ApplicationCookie 的 cookie 值
-
用户 A 注销。执行此代码块:
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 登录。
- 我将步骤 2 中的值粘贴到新的 userB cookie 值中
- 我导航到网站的另一个页面
- 我现在以 userA 身份登录
我现在的问题:
- 这是预期的行为吗?如果不是,这个问题的原因是什么?
- 有什么方法可以终止服务器端的会话吗?在我的 web.config 中,会话超时设置为 10 分钟并且站点成功注销,但是当使用任何用户重新登录并复制“旧”cookie 数据时,会话似乎仍然存在,即使在 48 小时后也是如此。
- 我还没有尝试过,但是如果我在另一个 IP 地址上执行这些步骤,我可以期待同样的行为吗?有没有办法阻止这个?
问候!
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-5