放开校验

This commit is contained in:
Tankaikai 2025-04-02 17:08:23 +08:00
parent 9f88726dde
commit bb386d0f54
1 changed files with 26 additions and 24 deletions

View File

@ -40,29 +40,31 @@ public class RateLimitAspect {
@Around("serviceLimit()")
public Object around(ProceedingJoinPoint point) throws Throwable {
// 获取当前请求
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 获取请求的 IP 地址
String ip = IPUtils.getIpAddr(request);
// 获取方法上的 @AccessLimit 注解
MethodSignature signature = (MethodSignature) point.getSignature();
Method method = signature.getMethod();
Limiting accessLimit = method.getAnnotation(Limiting.class);
double permitsPerSecond = accessLimit.limitNum();
// 获取或创建该 IP 对应的 RateLimiter
RateLimiter rateLimiter = RATE_LIMITER.computeIfAbsent(ip, k -> RateLimiter.create(permitsPerSecond));
// 尝试获取许可
if (rateLimiter.tryAcquire()) {
// 成功获取许可继续执行方法
return point.proceed();
} else {
// 未获取到许可抛出异常或返回错误信息
log.info("IP: {} 请求方法: {} 超过访问频率限制", ip, method.getName());
throw new LimitException("访问频率过高,请稍后再试");
}
// 成功获取许可继续执行方法
return point.proceed();
//// 获取当前请求
//ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//HttpServletRequest request = attributes.getRequest();
//// 获取请求的 IP 地址
//String ip = IPUtils.getIpAddr(request);
//
//// 获取方法上的 @AccessLimit 注解
//MethodSignature signature = (MethodSignature) point.getSignature();
//Method method = signature.getMethod();
//Limiting accessLimit = method.getAnnotation(Limiting.class);
//double permitsPerSecond = accessLimit.limitNum();
//
//// 获取或创建该 IP 对应的 RateLimiter
//RateLimiter rateLimiter = RATE_LIMITER.computeIfAbsent(ip, k -> RateLimiter.create(permitsPerSecond));
//
//// 尝试获取许可
//if (rateLimiter.tryAcquire()) {
// // 成功获取许可继续执行方法
// return point.proceed();
//} else {
// // 未获取到许可抛出异常或返回错误信息
// log.info("IP: {} 请求方法: {} 超过访问频率限制", ip, method.getName());
// throw new LimitException("访问频率过高,请稍后再试");
//}
}
}