放开校验
This commit is contained in:
parent
9f88726dde
commit
bb386d0f54
|
|
@ -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("访问频率过高,请稍后再试");
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue