c#中防止同一賬號重復登錄的方法有不少,比如用數據庫來記錄用戶登錄情況、用Application來保存用戶登錄信息、用Cache來保存信息等。
本文為大家介紹如何利用緩存Cache方便地實現此功能。
Cache與Session這二個狀態對像的其中有一個不同之處,Cache是一個全局對象,作用的范圍是整個應用程序,所有用戶;
而Session是一個用戶會話對象,是局部對象,用於保存單個用戶的信息。
只要把每次用戶登錄后的用戶信息存儲在Cache中,把Cache的Key名設為用戶的登錄名,Cache的過期時間設置為Session的超時時間,在用戶每次登錄的時候去判斷一下Cache[用戶名]是否有值,如果沒有值,證明該用戶沒有登錄,否則該用戶已登錄。
為大家舉一個例子吧。
/// <summary> /// 防止多次登錄 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button1_Click(object sender, System.EventArgs e) { string strUser = string.Empty; string strCacheKey = this.TextBox1.Text; strUser = Convert.ToString(Cache[strCacheKey]); if (strUser == string.Empty) { TimeSpan SessTimeOut = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0); Cache.Insert(strCacheKey, strCacheKey, null, DateTime.MaxValue, SessTimeOut, CacheItemPriority.NotRemovable, null); Session["User"] = strCacheKey; this.Label1.Text = Session["User"].ToString(); } else { this.Label1.Text = "這個用戶已經登錄!"; } }
大家可以把上面代碼用在自己的程序中,檢測一下,有效防止同一賬號的重復登錄。