ASP.NETは同一ユーザの同時登録を防止する

2484 ワード

同じユーザが同時にログインすることを防止するには,トップページにオンラインユーザの情報(ここではユーザ名と例)を記録し,ログイン中のユーザの中に既に存在するか否かを判断する.ここではログインしたユーザー名をcacheで保存しますが、ユーザーがいつシステムを離れたのかを知る問題があります.これは定期的にcacheの内容をクリアし、つまりcacheの時間を設定します.この時間はユーザーのセッション値と結びつけることができ、ちょうどユーザーのセッション値が失効したときにそのユーザーのcache内の情報も空になります.これにより、同時ログイン防止の効果が得られます.具体的なコードは以下の通りです.
string key = TextBox1.Text; //        cache   
string uer = Convert.ToString(Cache[key]); // cache
// cache , ,
if (uer == null || uer == String.Empty)
{
 // cache
 TimeSpan SessTimeout = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);
 // cache ,
 HttpContext.Current.Cache.Insert(key, key, null, DateTime.MaxValue, SessTimeout, System.Web.Caching.CacheItemPriority.NotRemovable, null);
 Session["ADMINID"] = TextBox1.Text;
 Response.Redirect("main.aspx");
}
else
{
 //
 Response.Write("<script>alert(' !');window.location='login.aspx';</script>");
}