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

时间:2014-07-10 09:00:11

标签: c# asp.net asp.net-mvc session

我是MVC的新手,我希望为每个登录获得新的sessionId,因为我会变得像

     string sessionId=HttpContext.Current.Session.SessionID;

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

我习惯于删除或清除以下会话:

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

但是每次登录都没有改变基因会话。 是否可以为每次登录创建新的sessionId?

5 个答案:

答案 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)

只需创建一个表(或用户表的另一列),并在用户进入网站时记录。 像标志一样确定用户当前正在登录的东西 做一些工作来检查和注销用户一段时间,管理员据说可以手动杀死会话。