From b3ec53a9da0c09dd03da33bfc27f278d13a5d8f9 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期四, 16 二月 2023 19:08:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java | 73 +++++++++++++++++++++++++----------- 1 files changed, 51 insertions(+), 22 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 3965c83..5fcf581 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 @@ -2,12 +2,15 @@ import com.google.code.kaptcha.Constants; import com.stylefeng.guns.core.base.controller.BaseController; +import com.stylefeng.guns.core.common.constant.Const; import com.stylefeng.guns.core.common.exception.InvalidKaptchaException; import com.stylefeng.guns.core.log.LogManager; import com.stylefeng.guns.core.log.factory.LogTaskFactory; import com.stylefeng.guns.core.node.MenuNode; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.shiro.ShiroUser; +import com.stylefeng.guns.core.shiro.factory.IShiro; +import com.stylefeng.guns.core.shiro.factory.ShiroFactroy; import com.stylefeng.guns.core.util.ApiMenuFilter; import com.stylefeng.guns.core.util.KaptchaUtil; import com.stylefeng.guns.core.util.SinataUtil; @@ -16,6 +19,7 @@ import com.stylefeng.guns.modular.system.service.IMenuService; import com.stylefeng.guns.modular.system.service.IUserService; import com.stylefeng.guns.modular.system.util.AESUtils; +import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; @@ -103,7 +107,8 @@ * 跳转到登录页面 */ @RequestMapping(value = "/login", method = RequestMethod.GET) - public String login() { + public String login(Model model) { + model.addAttribute("number",0); if (ShiroKit.isAuthenticated() || ShiroKit.getUser() != null) { return REDIRECT + "/"; } else { @@ -148,29 +153,52 @@ Integer f = loginFailures.get(username); f = f == null ? 0 : f; - Long t = loginTime.get(username); - t = null == t ? 0 : t; - if(System.currentTimeMillis() - t > (30 * 60 * 1000)){ - loginFailures.put(username, f = 1); - loginTime.put(username, System.currentTimeMillis()); - }else{ + // 校验账号,密码是否正确,如果错误,对次数进行加1 + IShiro shiroFactory = ShiroFactroy.me(); + User user = userService.getByAccount(username); + password = AESUtils.decrypt(password); + if(null == user){ f++; loginFailures.put(username, f); - } - - if(f > 5 && (System.currentTimeMillis() - t) <= (30 * 60 * 1000)){ - model.addAttribute("tips", "登录次数过多,请等30分钟再试!"); - return "/login.html"; - } - //验证验证码是否正确 - if (KaptchaUtil.getKaptchaOnOff()) { - String kaptcha = super.getPara("kaptcha").trim(); - String code = (String) super.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); - if (ToolUtil.isEmpty(kaptcha) || !kaptcha.equalsIgnoreCase(code)) { - throw new InvalidKaptchaException(); + }else { + // 校验密码 + ShiroUser shiroUser1 = shiroFactory.shiroUser(user); + SimpleAuthenticationInfo info = shiroFactory.info(shiroUser1, user, username); + System.out.println(info.getCredentials()); + String pass = ShiroKit.md5(password, user.getSalt()); + System.out.println(pass); + if(!info.getCredentials().equals(pass)){ + f++; + loginFailures.put(username, f); + if(f<5){ + model.addAttribute("number", "3"); + } + if(f==5){ + model.addAttribute("number", "5"); + } + return "/login.html"; } } - password = AESUtils.decrypt(password); + model.addAttribute("number", "3"); + /*if(f > 5 ){ + model.addAttribute("tips", "登录次数过多,请等30分钟再试!"); + if (KaptchaUtil.getKaptchaOnOff()) { + String kaptcha = super.getPara("kaptcha").trim(); + String code = (String) super.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); + if (ToolUtil.isEmpty(kaptcha) || !kaptcha.equalsIgnoreCase(code)) { + throw new InvalidKaptchaException(); + } + } + return "/login.html"; + }*/ + //验证验证码是否正确 +// if (KaptchaUtil.getKaptchaOnOff()) { +// String kaptcha = super.getPara("kaptcha").trim(); +// String code = (String) super.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); +// if (ToolUtil.isEmpty(kaptcha) || !kaptcha.equalsIgnoreCase(code)) { +// throw new InvalidKaptchaException(); +// } +// } Subject currentUser = ShiroKit.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(username, password.toCharArray()); @@ -179,11 +207,12 @@ // } else { // token.setRememberMe(false); // } - 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