網上看到可用Cache來判斷用戶是否已登陸的方法,感覺還不錯。實驗後,特此分享代碼
原理比較簡單:
判斷cache中是否已存在規定的客戶登陸字符串,如果沒有便添加,同時指定其在cache中的保存時間。重復登陸時,便能通過判斷cache值是否為空來判斷用戶是否重復登陸了。
//生成Key
string sKey = TextBox1.Text + "_IsLogin";
//得到Cache中的給定Key的值
string sUser = Convert.ToString(Cache[sKey]);
//檢查是否存在
if (sUser == null || sUser == String.Empty)
{
//Cache中沒有該Key的項目,表明用戶沒有登錄,或者已經登錄超時
//TimeSpan 表示一個時間間隔,獲取系統對session超時作的設置值
//TimeSpan SessTimeOut = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);
//(如果考慮到允許用戶再次登陸的時間小於session超時時間,可將此值設小,在此示例中設置為一分鐘)
TimeSpan SessTimeOut = new TimeSpan(0, 0, 1, 0, 0);
HttpContext.Current.Cache.Insert(sKey, sKey, null, DateTime.MaxValue, SessTimeOut,
System.Web.Caching.CacheItemPriority.NotRemovable, null);
//首次登錄,您可以做您想做的工作了。
Label1.Text = "你好!歡迎光臨";
}
else
{
//在Cache中發現該用戶的記錄,表名已經登錄過,禁止再次登錄
Label1.Text = "對不起,你已在別處登陸.或者在1分鐘後重試";
return;
}