1. 程式人生 > 其它 >java一分鐘三次登入錯誤資訊限制

java一分鐘三次登入錯誤資訊限制

一、功能

  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")
    public
String 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>

五、展示