From 1ed1752f678f769e43e9faa34809701850c7f727 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期四, 30 三月 2023 19:14:38 +0800
Subject: [PATCH] update 优化 验证码有效期 迁移到数据库 参数管理内

---
 ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java |   21 +++++++++------------
 1 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java
index b853ab4..f51db1e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java
@@ -4,6 +4,7 @@
 import cn.dev33.satoken.secure.BCrypt;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.core.constant.Constants;
@@ -30,12 +31,11 @@
 import com.ruoyi.system.domain.vo.SysTenantVo;
 import com.ruoyi.system.domain.vo.SysUserVo;
 import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysPermissionService;
 import com.ruoyi.system.service.ISysTenantService;
-import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.time.Duration;
@@ -57,12 +57,7 @@
     private final CaptchaProperties captchaProperties;
     private final ISysPermissionService permissionService;
     private final ISysTenantService tenantService;
-
-    @Value("${user.password.maxRetryCount}")
-    private Integer maxRetryCount;
-
-    @Value("${user.password.lockTime}")
-    private Integer lockTime;
+    private final ISysConfigService configService;
 
     /**
      * 鐧诲綍楠岃瘉
@@ -74,11 +69,10 @@
      * @return 缁撴灉
      */
     public String login(String tenantId, String username, String password, String code, String uuid) {
-        HttpServletRequest request = ServletUtils.getRequest();
         boolean captchaEnabled = captchaProperties.getEnable();
         // 楠岃瘉鐮佸紑鍏�
         if (captchaEnabled) {
-            validateCaptcha(tenantId, username, code, uuid, request);
+            validateCaptcha(tenantId, username, code, uuid);
         }
         // 鏍¢獙绉熸埛
         checkTenant(tenantId);
@@ -177,7 +171,6 @@
      * @param username 鐢ㄦ埛鍚�
      * @param status   鐘舵��
      * @param message  娑堟伅鍐呭
-     * @return
      */
     private void recordLogininfor(String tenantId, String username, String status, String message) {
         LogininforEvent logininforEvent = new LogininforEvent();
@@ -220,7 +213,7 @@
      * @param code     楠岃瘉鐮�
      * @param uuid     鍞竴鏍囪瘑
      */
-    public void validateCaptcha(String tenantId, String username, String code, String uuid, HttpServletRequest request) {
+    public void validateCaptcha(String tenantId, String username, String code, String uuid) {
         String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.defaultString(uuid, "");
         String captcha = RedisUtils.getCacheObject(verifyKey);
         RedisUtils.deleteObject(verifyKey);
@@ -343,6 +336,10 @@
 
         // 鑾峰彇鐢ㄦ埛鐧诲綍閿欒娆℃暟(鍙嚜瀹氫箟闄愬埗绛栫暐 渚嬪: key + username + ip)
         Integer errorNumber = RedisUtils.getCacheObject(errorKey);
+        //瀵嗙爜鏈�澶ч敊璇鏁�
+        Integer maxRetryCount = Convert.toInt(configService.selectConfigByKey("sys.user.maxRetryCount"));
+        //瀵嗙爜閿佸畾鏃堕棿
+        Integer lockTime = Convert.toInt(configService.selectConfigByKey("sys.user.lockTime"));
         // 閿佸畾鏃堕棿鍐呯櫥褰� 鍒欒涪鍑�
         if (ObjectUtil.isNotNull(errorNumber) && errorNumber.equals(maxRetryCount)) {
             recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));

--
Gitblit v1.9.3