From 67bfacb03541ef2ee4c1496f4cc7600014cd1005 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 18 四月 2023 17:37:50 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java index 9978e45..63fdeb0 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java @@ -50,6 +50,9 @@ @Autowired private IUserService userService; + private Map<String, Integer> loginFailures = new HashMap<>(); + + /** @@ -115,6 +118,32 @@ */ @RequestMapping(value = "/login", method = RequestMethod.POST) public String loginVali(String username, String password, String remember, Model model, HttpServletRequest request) { + Integer f = loginFailures.get(username); + f = f == null ? 0 : f; + // 校验账号,密码是否正确,如果错误,对次数进行加1 + IShiro shiroFactory = ShiroFactroy.me(); + User user = userService.getByAccount(username); + if(null == user){ + f++; + loginFailures.put(username, f); + }else { + // 校验密码 + ShiroUser shiroUser1 = shiroFactory.shiroUser(user); + SimpleAuthenticationInfo info = shiroFactory.info(shiroUser1, user, username); + String pass = ShiroKit.md5(password, user.getSalt()); + if(!info.getCredentials().equals(pass)){ + f++; + loginFailures.put(username, f); + if(f<5){ + model.addAttribute("number", "3"); + } + if(f==5){ + model.addAttribute("number", "5"); + } + model.addAttribute("message","账号或密码错误!"); + return "/login.html"; + } + } model.addAttribute("number", "3"); Subject currentUser = ShiroKit.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(username, password.toCharArray()); @@ -127,6 +156,9 @@ token.setRememberMe(false);//关闭记住我功能 currentUser.login(token); + // 登录成功,错误次数值改0 + loginFailures.put(username, 0); + ShiroUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); -- Gitblit v1.7.1