From 714f00423c36a75c2ea5754068fa84a37e34aedf Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Mon, 18 Dec 2023 20:43:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coal/filter/RateLimitFilter.java | 17 +++++++++++++- .../loginUser/service/LoginUserService.java | 2 +- .../coal/ratelimit/RateLimiterService.java | 22 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/filter/RateLimitFilter.java b/src/main/java/cn/lihongjie/coal/filter/RateLimitFilter.java index d608a716..40532f82 100644 --- a/src/main/java/cn/lihongjie/coal/filter/RateLimitFilter.java +++ b/src/main/java/cn/lihongjie/coal/filter/RateLimitFilter.java @@ -65,8 +65,16 @@ public class RateLimitFilter extends OncePerRequestFilter { RateLimiterService.RateLimitAcquireResult acquireSessionRL = rateLimiterService.acquireSessionRL(sessionId); + + if (acquireSessionRL != RateLimiterService.RateLimitAcquireResult.SUCCESS ) { sysLogService.saveSysLog(request, "限流模块", "会话限流", acquireSessionRL.name()); + + if (acquireSessionRL == RateLimiterService.RateLimitAcquireResult.ERROR){ + writeResponse(new BizException("invalidToken","请重新登录"), response); + return; + } + writeResponse(new BizException("当前会话请求被限流,请稍后再试"), response); log.warn( "会话限流: sessionId {} user {} request {} type {}", @@ -80,6 +88,10 @@ public class RateLimitFilter extends OncePerRequestFilter { RateLimiterService.RateLimitAcquireResult acquireUserRL = rateLimiterService.acquireUserRL(Ctx.currentUser().getId()); if (acquireUserRL != RateLimiterService.RateLimitAcquireResult.SUCCESS ) { sysLogService.saveSysLog(request, "限流模块", "用户限流", acquireSessionRL.name()); + if (acquireUserRL == RateLimiterService.RateLimitAcquireResult.ERROR){ + writeResponse(new BizException("invalidToken","请重新登录"), response); + return; + } writeResponse(new BizException("当前会话请求被限流,请稍后再试"), response); log.warn( "用户限流: sessionId {} user {} request {} type {}", @@ -100,7 +112,10 @@ public class RateLimitFilter extends OncePerRequestFilter { if (acquire != RateLimiterService.RateLimitAcquireResult.SUCCESS) { sysLogService.saveSysLog(request, "限流模块", "IP限流", acquire.name()); - + if (acquire == RateLimiterService.RateLimitAcquireResult.ERROR){ + writeResponse(new BizException("invalidToken","请重新登录"), response); + return; + } writeResponse(new BizException("请求被限流,请稍后再试"), response); log.warn("ip {} request {} type {} is rate limited", ip, request.getRequestURI(), acquire.name()); return; diff --git a/src/main/java/cn/lihongjie/coal/loginUser/service/LoginUserService.java b/src/main/java/cn/lihongjie/coal/loginUser/service/LoginUserService.java index eef874ed..474dfa90 100644 --- a/src/main/java/cn/lihongjie/coal/loginUser/service/LoginUserService.java +++ b/src/main/java/cn/lihongjie/coal/loginUser/service/LoginUserService.java @@ -248,7 +248,7 @@ public class LoginUserService extends BaseService