繁体   English   中英

如何在 Asp.net MVC 中为每次登录创建会话 ID?

[英]How to create Session Id for every Login in Asp.net MVC?

我是 MVC 的新手,我想为每个登录获取新的 sessionId,因为我越来越喜欢

     string sessionId=HttpContext.Current.Session.SessionID;

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

我曾经删除或清除会话,如下所示:

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

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

当你放弃会话/注销时试试这个:

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.Abandon 方法

如果您使用的是 Framework 4.0,这对我有用:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM