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