whyczh
2021-06-02 bf6ca5a3a44bb2c72232c5b7f40f209c94ed3267
登录次数添加
2个文件已修改
26 ■■■■■ 已修改文件
nfdw_stand/src/com/fgkj/dao/impl/User_limitImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
nfdw_stand/src/com/fgkj/services/User_infService.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
nfdw_stand/src/com/fgkj/dao/impl/User_limitImpl.java
@@ -49,7 +49,7 @@
    @Override
    public List serchByInfo(Object obj) {
        User_limit limit = (User_limit) obj;
        String sql = "select userId,limitDuration,loginTime from tb_user_limit where userId=?";
        String sql = "select id,userId,limitDuration,loginTime from tb_user_limit where userId=?";
        List list = DAOHelper
                .executeQuery(sql, DBUtil.getConn(), new Object[]{limit.getUserId()}, new CallBack() {
                            @Override
nfdw_stand/src/com/fgkj/services/User_infService.java
@@ -260,10 +260,14 @@
        return model;
    }
    /***
     * 通过用户id查询并解除需要解除限制的用户
     * @param userId
     */
    public void limitUser(int userId){
        User_limit user_limit = new User_limit(userId);
        List limitList = ((User_limitImpl)dao).serchByInfo(user_limit);
        User_limitImpl limitImpl = new User_limitImpl();
        List limitList = limitImpl.serchByInfo(user_limit);
        if (limitList.size()>=1){
            for (int i = 0; i < limitList.size(); i++) {
                User_limit limit = (User_limit) limitList.get(i);
@@ -271,7 +275,7 @@
                long login = limit.getLoginTime().getTime()+limit.getLimitDuration()*1000;
                //如果限制时间已到,先删除限制的数据
                if (now>=login){
                    ((User_limitImpl)dao).del(limit);
                    limitImpl.del(limit);
                }
            }
        }
@@ -291,13 +295,19 @@
        } else {
            //优先判断是否用户属于密码登录类型,loginType分为密码登录-1,人脸登录-2
            User_inf u = (User_inf) list.get(0);
            ServletContext application = ActionUtil.getApplication();
            if(application.getAttribute("loginFails")!=null){
                loginFails = (int)application.getAttribute("loginFails");
            }
            //查看此用户是否是被限制的用户
            limitUser(u.getUId()); //查询前先解除可以解除的限制用户
            User_limit user_limit = new User_limit(u.getUId());
            List limitList2 = ((User_limitImpl)dao).serchByInfo(user_limit);
            List limitList2 =  new User_limitImpl().serchByInfo(user_limit);
            if (limitList2.size()>=1){
                User_limit limit = (User_limit) limitList2.get(0);
                model.setMsg("当前用户登录密码错误次数已达"+MAXLOGINFAILS_PW+"次,请联系管理员或等待"+limit.getLimitDuration()+"秒后解除限制");
                long sec = limit.getLimitDuration()-(new Date().getTime()-limit.getLoginTime().getTime())/1000;
                model.setMsg("密码错误次数已达"+MAXLOGINFAILS_PW+"次");
                model.setData(sec);
                return model;
            }
            if(u.getLoginType()!=1){
@@ -321,11 +331,11 @@
                    System.out.println("密码错误"+uinf.getUpassword()+"=="+u.getUpassword());
                    //密码错误次数
                    loginFails++;
                    ActionUtil.getSession().setAttribute("loginFails",loginFails);
                    ActionUtil.getApplication().setAttribute("loginFails",loginFails);
                    //如果密码错误次数达到5次,将锁定用户限制登录
                    if (loginFails==MAXLOGINFAILS_PW){
                        User_limit user_limit1 = new User_limit(u.getUId());
                        boolean bl = ((User_limitImpl)dao).add(user_limit1);
                        boolean bl = new User_limitImpl().add(user_limit1);
                        if (bl){
                            System.out.println(u.getUName()+"用户密码错误次数达到"+MAXLOGINFAILS_PW+"次,添加到限制用户中");
                        }