java一分鐘三次登入錯誤資訊限制
阿新 • • 發佈:2021-11-30
一、功能
java一分鐘三次登入錯誤資訊限制
二、虛擬碼
檢測登入名是否是在庫使用者:
false:提示錯誤資訊無使用者
true:檢查是否加入過錯誤登陸列表
false:新建一個,id1=當前時間戳,id2=0,id3=0,loginname=loginname
true:檢測loginname為loginname的使用者的id2
false:為0,更新此條資料庫資訊,id2=當前時間戳
true:不為0,檢測loginname為loginname的使用者的id3
false:為0,更新此條資料庫資訊,id3=當前時間戳
true:不為0,判斷id3-id2=1>60
true:禁用該使用者
false:判斷d3-d2>60
true:d1=d3,d2=0,d3=0
false:d1=d2,d2=d3,d3=0
沒看錯就是六層if-else巢狀(尬笑哈哈哈,等我學會了cookie我再回來更新)
三、資料庫
四、程式碼
Controller
@RequestMapping(value = "managers_check_login") publicString managers_check_login(String loginname, String password, HttpServletRequest request) throws SocketException, UnknownHostException, ParseException { String msg = ""; SysManagers s = new SysManagers(); s.setLoginname(loginname.trim()); s.setPassword(ShaEncrypt.shaEncode(password));if(managers_service.find_check_loginname(loginname).isEmpty()){ msg="error"; }else { request.setAttribute("na",loginname); List<SysManagers> check_login = managers_service.select_check_login(s); if(check_login.isEmpty()){ //切入程式碼片段 LoginInfoSave(loginname,"1"); //先查出錯歷史裡有沒有,有就繼續增加一個,沒有就建立一個 List<SysManagersWrongLoginHistory> wronghis_list=wronghis_service.find_wrong_by_loginname(loginname); //非法使用者 msg = "error"; if(wronghis_list.isEmpty()) { //新建一個 SysManagersWrongLoginHistory wronghis = new SysManagersWrongLoginHistory(); wronghis.setId(CreateUUID.getuuid()); wronghis.setD1(System.currentTimeMillis()); wronghis.setLoginname(loginname); wronghis_service.save_new_wrong_by_loginname(wronghis); //非法使用者 msg = "error"; }else { if(wronghis_list.get(0).getD2()==0&&wronghis_list.get(0).getD3()==0){ SysManagersWrongLoginHistory wronghis = new SysManagersWrongLoginHistory(); wronghis.setId(CreateUUID.getuuid()); wronghis.setD1(0); wronghis.setD2(System.currentTimeMillis()); wronghis.setD3(0); wronghis.setLoginname(loginname); wronghis_service.update_new_wrong_by_loginname(wronghis); //非法使用者 msg = "error"; } else{ if(wronghis_list.get(0).getD3()==0){ SysManagersWrongLoginHistory wronghis = new SysManagersWrongLoginHistory(); wronghis.setId(CreateUUID.getuuid()); wronghis.setD1(0); wronghis.setD3(System.currentTimeMillis()); wronghis.setD2(0); wronghis.setLoginname(loginname); wronghis_service.update_new_wrong_by_loginname(wronghis); List<SysManagersWrongLoginHistory> wronghis_list_inner=wronghis_service.find_wrong_by_loginname(loginname); long a = wronghis_list_inner.get(0).getD1(); long b = wronghis_list_inner.get(0).getD2(); long c = wronghis_list_inner.get(0).getD3(); long d13 = c - a ; long d23 = c - b ; System.out.println("31之間的秒數差為:"+d13/1000); System.out.println("1:"+a); System.out.println("3:"+c); if(d13/1000>60){ if(d23/1000>60){ SysManagersWrongLoginHistory wronghis_change = new SysManagersWrongLoginHistory(); wronghis_change.setD1(c); wronghis_change.setD2(0); wronghis_change.setD3(0); wronghis_change.setLoginname(loginname); wronghis_service.change_new_wrong_by_loginname(wronghis_change); System.out.println("1刪去"); }else{ SysManagersWrongLoginHistory wronghis_change = new SysManagersWrongLoginHistory(); wronghis_change.setD1(b); wronghis_change.setD2(c); wronghis_change.setD3(0); wronghis_change.setLoginname(loginname); wronghis_service.change_new_wrong_by_loginname(wronghis_change); System.out.println("12刪去"); } } //非法使用者 msg = "error"; }else { msg="賬戶被鎖定,請聯絡管理員"; } } } }else{ //正常使用者 String logname = ""; for(SysManagers m:check_login){ logname = m.getLoginname(); } List<SysDic> dic_list = dic_service.selectAll(); for(SysDic d:dic_list){ request.getSession().setAttribute(d.getDickeys(),d.getDicdes()); } request.getSession().setAttribute("loginname",logname); request.getSession().setMaxInactiveInterval(18200); //切入程式碼片段 LoginInfoSave(loginname,"0"); msg = "success"; } } request.setAttribute("msg",msg); return "index/login"; }
@RequestMapping(value = "lock_users")
public String lock_users(String loginname) {
List<SysManagers> list=managers_service.find_check_loginname(loginname);
String id=list.get(0).getId();
SysManagers s=new SysManagers();
s.setId(id);
s.setFlag("1");
managers_service.update_flag(s);
return "index/login";
}
JSP:
<script type="text/javascript"> function check_msg(){ var msg = '${msg}'; if(msg=='error'){ alert("系統提示:您的賬號或者密碼不正確,導致登入失敗!一分鐘內同一個賬號密碼填錯三次,賬號會被凍結!"); } if(msg=="success"){ window.location.href = "index"; } if (msg=="賬戶被鎖定,請聯絡管理員"){ alert("賬戶被鎖定,請聯絡管理員"); window.location.href = "lock_users?loginname=${na}"; } } </script>