ip 请求次数限制4

This commit is contained in:
GYJ
2025-03-23 20:55:55 +08:00
parent 172c4aeaaf
commit 63aee02a16

View File

@@ -51,7 +51,6 @@ public class IpAccessCounter {
} }
removedBlacklistIps.forEach(BLACKLIST::remove); removedBlacklistIps.forEach(BLACKLIST::remove);
log.info("IpAccessCounter 清理完成,移除了 {} 个 IP 的黑名单记录,当前 BLACKLIST 大小: {}", removedBlacklistIps.size(), BLACKLIST.size()); log.info("IpAccessCounter 清理完成,移除了 {} 个 IP 的黑名单记录,当前 BLACKLIST 大小: {}", removedBlacklistIps.size(), BLACKLIST.size());
log.info("IpAccessCounter 定时清理访问记录和黑名单完成");
} }
}, ONE_MINUTE, 20000); }, ONE_MINUTE, 20000);
} }
@@ -59,7 +58,7 @@ public class IpAccessCounter {
// 检查 IP 是否可以访问 // 检查 IP 是否可以访问
public static boolean canAccess(String ip, Integer maxAccessCount) { public static boolean canAccess(String ip, Integer maxAccessCount) {
if (isBlacklisted(ip)) { if (isBlacklisted(ip)) {
log.info("IP {} 被阻止访问,因为在黑名单中", ip); log.info("IpAccessCounter IP {} 被阻止访问,因为在黑名单中", ip);
return false; return false;
} }
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
@@ -72,17 +71,12 @@ public class IpAccessCounter {
return false; return false;
} }
accessTimes.add(currentTime); accessTimes.add(currentTime);
log.info("IP {} 在一分钟内第 {} 次访问", ip, accessTimes.size());
return true; return true;
} }
// 检查 IP 是否在黑名单中 // 检查 IP 是否在黑名单中
private static boolean isBlacklisted(String ip) { private static boolean isBlacklisted(String ip) {
boolean result = BLACKLIST.containsKey(ip) && System.currentTimeMillis() - BLACKLIST.get(ip) <= TEN_MINUTES; return BLACKLIST.containsKey(ip) && System.currentTimeMillis() - BLACKLIST.get(ip) <= TEN_MINUTES;
if (result) {
log.debug("IP {} 在黑名单中", ip);
}
return result;
} }
// 将 IP 加入黑名单 // 将 IP 加入黑名单