我想实现一个代码,每个用户只启用一个会话。我将 asp.net 与表单身份验证一起使用。
我读了这篇文章: 在 ASP.NET 中每个用户只限制一个会话
但我想做相反的事情,断开所有以前的会话。
这是我的代码:
void Application_Start(object sender, EventArgs e) { Application["UsersLoggedIn"] = new System.Collections.Generic.Dictionary<string, string>(); }
当用户登录时,我插入一条记录:用户名,sessionID。如果用户名存在,我只更新 sessionID
void Application_BeginRequest(object sender, EventArgs e)
{
System.Collections.Generic.Dictionary<string, string> d = HttpContext.Current.Application["UsersLoggedIn"] as System.Collections.Generic.Dictionary<string, string>;
if (d != null)
{
if (d.Count > 0)
{
string userName = HttpContext.Current.User.Identity.Name;
if (!string.IsNullOrEmpty(userName))
{
if (d.ContainsKey(userName))
{
if (d[userName] != HttpContext.Current.Session.SessionID)
{
FormsAuthentication.SignOut();
Session.Abandon();
}
}
}
}
}
但我得到空的 HttpContext.Current.User。我也试过“AuthenticatedRequest”,但后来我得到了空会话。
有什么想法吗?