From a03a6c98a94510025d4574fbd06b3d70b1d58ba1 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 26 八月 2026 09:08:06 +0800
Subject: [PATCH] 增加管理后台登录频次校验和连续错误登录后限制登录 修改管理后台验证码生成和登录校验
---
ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
index 5d3ad86..4c02c90 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
@@ -1,6 +1,7 @@
package com.ruoyi.common.redis.service;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -11,6 +12,7 @@
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.stereotype.Component;
/**
@@ -50,6 +52,24 @@
}
/**
+ * 缓存值原子递增,并在首次递增时设置有效时间
+ *
+ * @param key 缓存键值
+ * @param timeout 时间
+ * @param timeUnit 时间颗粒度
+ * @return 递增后的值
+ */
+ public long incrementCacheValue(final String key, final long timeout, final TimeUnit timeUnit)
+ {
+ String scriptText = "local count = redis.call('incr', KEYS[1]); "
+ + "if count == 1 then redis.call('pexpire', KEYS[1], ARGV[1]); end; return count;";
+ DefaultRedisScript<Long> script = new DefaultRedisScript<>(scriptText, Long.class);
+ long timeoutMillis = timeUnit.toMillis(timeout);
+ Long count = (Long) redisTemplate.execute(script, Collections.singletonList(key), timeoutMillis);
+ return count == null ? 0L : count;
+ }
+
+ /**
* 设置有效时间
*
* @param key Redis键
--
Gitblit v1.7.1