我是MVC的新手,我希望为每个登录获得新的sessionId,因为我会变得像
string sessionId=HttpContext.Current.Session.SessionID;
但是,它为每次登录生成相同的sessionid。
我习惯于删除或清除以下会话:
Session.Abandon();
Session.RemoveAll();
Session.Clear();
但是每次登录都没有改变基因会话。 是否可以为每次登录创建新的sessionId?
答案 0 :(得分:12)
放弃会话/退出时尝试此操作:
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
通过清除该cookie,第二次登录后将创建一个具有新会话ID的新会话。
答案 1 :(得分:10)
我有更好的解决方案来创建新的会话ID,如
SessionIDManager manager = new SessionIDManager();
string newSessionId = manager.CreateSessionID(HttpContext.Current);
上面的代码帮助了我。
答案 2 :(得分:0)
被废弃或过期的会话的会话标识符默认情况下被回收。也就是说,如果发出的请求包括已过期或已放弃会话的会话标识符,则使用相同的会话标识符开始新的会话。您可以通过将sessionState配置元素的regenerateExpiredSessionId
属性设置为true来禁用此功能。
您可以参考HttpSessionState.Abandon Method。
答案 3 :(得分:-1)
如果您使用的是Framework 4.0,这对我有用:
using System.Web;
...
string sid = HttpContext.Session.SessionID;
答案 4 :(得分:-4)
只需创建一个表(或用户表的另一列),并在用户进入网站时记录。 像标志一样确定用户当前正在登录的东西 做一些工作来检查和注销用户一段时间,管理员据说可以手动杀死会话。