如何在Asp.net MVC中为每个登录创建会话Id

本文关键字:登录 创建 Id 会话 Asp net MVC | 更新日期: 2023-09-27 18:12:21

我是新的MVC,我想得到新的sessionId为每个登录,因为我得到喜欢

     string sessionId=HttpContext.Current.Session.SessionID;

但是,它为每次登录生成相同的sessionid。

我曾经这样删除或清除会话:

        Session.Abandon();
        Session.RemoveAll();
        Session.Clear();

但是为每次登录生成sessionid没有变化。是否有其他方法可以为每次登录创建新的sessionId ?

如何在Asp.net MVC中为每个登录创建会话Id

在放弃会话/登出时尝试此操作:

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

通过清除cookie,将在第二次登录后创建一个具有新会话ID的新会话。

我有一个更好的解决方案来创建新的会话id,如

SessionIDManager manager = new SessionIDManager();
string newSessionId =  manager.CreateSessionID(HttpContext.Current);

默认情况下,废弃或过期会话的会话标识符将被回收。也就是说,如果发出的请求包含过期或放弃会话的会话标识符,则使用相同的会话标识符启动新会话。您可以通过将sessionState配置元素的regenerateExpiredSessionId属性设置为true来禁用此功能。
可以参考HttpSessionState。放弃方法。

如果你使用的是Framework 4.0,这对我来说是有效的:

using System.Web;
...
string sid = HttpContext.Session.SessionID;

只需创建一个表(或另一列到用户表),并记录当用户在网站内。类似标志的东西,用于确定用户当前是否登录做一些工作来检查和注销用户一段时间,管理员应该可以手动终止会话