From f1bdb285c951f7aef6f1f217773afb7737779435 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 26 八月 2026 09:03:30 +0800
Subject: [PATCH] 增加管理后台登录频次校验和连续错误登录后限制登录 修改管理后台验证码生成和登录校验
---
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java
index e00b1a4..f746379 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java
@@ -10,6 +10,8 @@
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
+import javax.servlet.http.HttpServletRequest;
+
/**
* 登录密码方法
*
@@ -39,7 +41,7 @@
return CacheConstants.PWD_ERR_CNT_KEY + username;
}
- public void validate(SysUser user, String password)
+ public void validate(SysUser user, String password, HttpServletRequest request)
{
String username = user.getUserName();
@@ -53,16 +55,21 @@
if (retryCount >= Integer.valueOf(maxRetryCount).intValue())
{
String errMsg = String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime);
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg);
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS,errMsg);
throw new ServiceException(errMsg);
}
if (!matches(user, password))
{
- retryCount = retryCount + 1;
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount));
- redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
- throw new ServiceException("密码错误");
+ retryCount = (int) redisService.incrementCacheValue(getCacheKey(username), lockTime, TimeUnit.MINUTES);
+ redisService.expire(getCacheKey(username), lockTime, TimeUnit.MINUTES);
+ String errMsg = String.format("密码输入错误%s次", retryCount);
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS, errMsg);
+ if (retryCount >= maxRetryCount)
+ {
+ throw new ServiceException(String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime));
+ }
+ throw new ServiceException("用户名或密码错误");
}
else
{
--
Gitblit v1.7.1