From 5c24ff0148d5399da4db97f1b7495ada96a7d8e6 Mon Sep 17 00:00:00 2001 From: fangchengyan Date: Fri, 16 Apr 2021 10:44:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E9=99=A4=E7=94=A8=E6=88=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=9A=84=E9=94=99=E8=AF=AF=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysUserController.java | 32 +++++++++++++++++++ .../resources/templates/system/user/user.html | 15 +++++++++ .../common/core/domain/entity/SysUser.java | 13 ++++++++ .../shiro/service/SysPasswordService.java | 9 ++++++ 4 files changed, 69 insertions(+) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java index 9b40cfa13..fbea18eb9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java @@ -2,6 +2,8 @@ package com.ruoyi.web.controller.system; import java.util.List; import java.util.stream.Collectors; + +import com.ruoyi.common.core.text.Convert; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -66,6 +68,8 @@ public class SysUserController extends BaseController { startPage(); List list = userService.selectUserList(user); + list.forEach(sysUser -> sysUser.setErrorLoginTimes( + passwordService.getErrorLoginTimes(sysUser.getLoginName()))); return getDataTable(list); } @@ -243,6 +247,34 @@ public class SysUserController extends BaseController return toAjax(userService.deleteUserByIds(ids)); } + @RequiresPermissions("system:user:clear") + @Log(title = "用户管理", businessType = BusinessType.CLEAN) + @PostMapping("/clearErrorLoginTimes") + @ResponseBody + public AjaxResult clearErrorLoginTimes(String ids) + { + try + { + int result = 0; + Long[] userIds = Convert.toLongArray(ids); + for (Long userId : userIds) + { + SysUser sysUser = userService.selectUserById(userId); + if(null == sysUser) + { + continue; + } + passwordService.clearLoginRecordCache(sysUser.getLoginName()); + result++; + } + return AjaxResult.success(result); + } + catch (Exception e) + { + return error(e.getMessage()); + } + } + /** * 校验用户名 */ diff --git a/ruoyi-admin/src/main/resources/templates/system/user/user.html b/ruoyi-admin/src/main/resources/templates/system/user/user.html index 21d506c37..b196bec53 100644 --- a/ruoyi-admin/src/main/resources/templates/system/user/user.html +++ b/ruoyi-admin/src/main/resources/templates/system/user/user.html @@ -92,6 +92,7 @@ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index f3ff4d9f3..2328bd87e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -100,6 +100,8 @@ public class SysUser extends BaseEntity /** 岗位组 */ private Long[] postIds; + private Integer errorLoginTimes; + public SysUser() { @@ -351,6 +353,16 @@ public class SysUser extends BaseEntity this.postIds = postIds; } + public Integer getErrorLoginTimes() + { + return errorLoginTimes; + } + + public void setErrorLoginTimes(Integer errorLoginTimes) + { + this.errorLoginTimes = errorLoginTimes; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -376,6 +388,7 @@ public class SysUser extends BaseEntity .append("remark", getRemark()) .append("dept", getDept()) .append("roles", getRoles()) + .append("errorLoginTimes", getErrorLoginTimes()) .toString(); } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java index 7eff195fa..1f7e053c8 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java @@ -73,6 +73,15 @@ public class SysPasswordService return user.getPassword().equals(encryptPassword(user.getLoginName(), newPassword, user.getSalt())); } + public int getErrorLoginTimes(String username) + { + AtomicInteger atomicInteger = loginRecordCache.get(username); + if (null == atomicInteger) { + return 0; + } + return atomicInteger.get(); + } + public void clearLoginRecordCache(String loginName) { loginRecordCache.remove(loginName);