我想實現一個代碼,每個用戶只能啓用一個會話。 我使用窗體身份驗證的asp.net。如何只允許每個用戶一個活動會話
我看到這篇文章: Limit only one session per user in ASP.NET
,但我想反其道而行之,斷開所有以前的會議。
這裏是我的代碼:
void Application_Start(object sender, EventArgs e) { Application["UsersLoggedIn"] = new System.Collections.Generic.Dictionary<string, string>(); }
在用戶登錄時,我插入一條記錄:用戶名,會話ID。 如果用戶名存在,我剛更新的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」,但後來我得到了空Session。
有什麼想法嗎?
謝謝!正是我所期待的。 – Inbal