From 014550c81617b442a53546b94e97dd58326f61ef Mon Sep 17 00:00:00 2001
From: konbai <1527468660@qq.com>
Date: 星期五, 09 六月 2023 13:33:03 +0800
Subject: [PATCH] fix 修复 登录校验错误次数未达到上限时,错误次数缓存未设置有效时间问题。
---
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java | 17 ++++++++---------
1 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
index 689a55d..2d816d1 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -340,25 +340,24 @@
String errorKey = GlobalConstants.PWD_ERR_CNT_KEY + username;
String loginFail = Constants.LOGIN_FAIL;
- // 鑾峰彇鐢ㄦ埛鐧诲綍閿欒娆℃暟(鍙嚜瀹氫箟闄愬埗绛栫暐 渚嬪: key + username + ip)
- Integer errorNumber = RedisUtils.getCacheObject(errorKey);
+ // 鑾峰彇鐢ㄦ埛鐧诲綍閿欒娆℃暟锛岄粯璁や负0 (鍙嚜瀹氫箟闄愬埗绛栫暐 渚嬪: key + username + ip)
+ int errorNumber = ObjectUtil.defaultIfNull(RedisUtils.getCacheObject(errorKey), 0);
// 閿佸畾鏃堕棿鍐呯櫥褰� 鍒欒涪鍑�
- if (ObjectUtil.isNotNull(errorNumber) && errorNumber.equals(maxRetryCount)) {
+ if (errorNumber >= maxRetryCount) {
recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime);
}
if (supplier.get()) {
- // 鏄惁绗竴娆�
- errorNumber = ObjectUtil.isNull(errorNumber) ? 1 : errorNumber + 1;
+ // 閿欒娆℃暟閫掑
+ errorNumber++;
+ RedisUtils.setCacheObject(errorKey, errorNumber, Duration.ofMinutes(lockTime));
// 杈惧埌瑙勫畾閿欒娆℃暟 鍒欓攣瀹氱櫥褰�
- if (errorNumber.equals(maxRetryCount)) {
- RedisUtils.setCacheObject(errorKey, errorNumber, Duration.ofMinutes(lockTime));
+ if (errorNumber >= maxRetryCount) {
recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime);
} else {
- // 鏈揪鍒拌瀹氶敊璇鏁� 鍒欓�掑
- RedisUtils.setCacheObject(errorKey, errorNumber);
+ // 鏈揪鍒拌瀹氶敊璇鏁�
recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitCount(), errorNumber));
throw new UserException(loginType.getRetryLimitCount(), errorNumber);
}
--
Gitblit v1.9.3