1. 程式人生 > >asp.net限制使用者登入錯誤次數

asp.net限制使用者登入錯誤次數

很經常在登入一個網站的時候看到,如果你登入的時候輸入的賬號密碼錯誤超過三次就被鎖定,然後等一段時間才能繼續登入,最最經常使用的就是銀行系統啦~~

該功能處理流程如下:

string uid = Request.Form["uid"] ?? "";  //獲取使用者登入名
string pwd = Request.Form["pwd"] ?? "";  //獲取密碼
T_Users user = userNameBll.GetByUserNameBll(uid);//呼叫Bll,根據使用者登入名查詢使用者
if (user == null)
{
	showUidHtml = "使用者名稱不存在!";
}
else
{
	if (user.ErrorTimes >= 3 && (DateTime.Now - user.LastLoginDate).TotalMinutes < 15)//如果該使用者的錯誤次數>=3,而且最後的出錯日期<15分鐘,那麼鎖定該使用者
	{
		showUidHtml = "使用者已鎖定";
	}
	else<span style="white-space:pre">	</span>//使用者還有繼續嘗試登入的機會
	{
		if ((DateTime.Now - user.LastLoginDate).TotalMinutes >= 15)//如果使用者的最後出錯日期已經>=15分鐘,那麼重置出錯次數為0(實現15分鐘之後不管有沒有出錯都為0,可以嘗試登入)
		{
			user.ErrorTimes = 0;
		}
		if (user.Password.Trim() == pwd)//如果密碼正確,重置出錯次數,並記錄相關資訊
		{
			user.LoginTimes++;
                        user.ErrorTimes = 0;
                        user.LastLoginDate = DateTime.Now;
			userBll.Update(user);
			Session["User"] = user;
		}
		else//如果密碼錯誤,出錯次數++,並記錄最後出錯的日期,更新到資料庫
		{
			user.ErrorTimes++;
                        user.LastLoginDate = DateTime.Now;
                        if (userBll.Update(user))
                        {
				showPwdHtml = "使用者名稱或密碼錯誤!";
                        }
		}
	}
}
完成~