asp.net限制使用者登入錯誤次數
阿新 • • 發佈:2019-02-10
很經常在登入一個網站的時候看到,如果你登入的時候輸入的賬號密碼錯誤超過三次就被鎖定,然後等一段時間才能繼續登入,最最經常使用的就是銀行系統啦~~
該功能處理流程如下:
完成~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 = "使用者名稱或密碼錯誤!"; } } } }