ip 请求次数限制4
This commit is contained in:
@@ -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 加入黑名单
|
||||||
|
|||||||
Reference in New Issue
Block a user