From 3c93f90fad6482e6397b7fc30931a1b71dc95610 Mon Sep 17 00:00:00 2001 From: xiongxiaoyang <1179705413@qq.com> Date: Sat, 11 Mar 2023 22:38:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(interceptor):=20handler=20=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=BC=82=E5=B8=B8=E6=97=B6=E6=B2=A1=E6=9C=89=E6=B8=85?= =?UTF-8?q?=E7=90=86=E6=8E=89=E5=BD=93=E5=89=8D=E7=BA=BF=E7=A8=8B=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E7=9A=84=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/interceptor/AuthInterceptor.java | 26 ++++++++++++++++--- .../interceptor/TokenParseInterceptor.java | 13 +++++++--- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/github/xxyopen/novel/core/interceptor/AuthInterceptor.java b/src/main/java/io/github/xxyopen/novel/core/interceptor/AuthInterceptor.java index 3296a25..2f16f58 100644 --- a/src/main/java/io/github/xxyopen/novel/core/interceptor/AuthInterceptor.java +++ b/src/main/java/io/github/xxyopen/novel/core/interceptor/AuthInterceptor.java @@ -9,14 +9,15 @@ import io.github.xxyopen.novel.core.constant.ApiRouterConsts; import io.github.xxyopen.novel.core.constant.SystemConfigConsts; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import java.nio.charset.StandardCharsets; -import java.util.Map; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; +import java.nio.charset.StandardCharsets; +import java.util.Map; + /** * 认证授权 拦截器:为了注入其它的 Spring beans,需要通过 @Component 注解将该拦截器注册到 Spring 上下文 * @@ -31,6 +32,9 @@ public class AuthInterceptor implements HandlerInterceptor { private final ObjectMapper objectMapper; + /** + * handle 执行前调用 + */ @SuppressWarnings("NullableProblems") @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, @@ -60,12 +64,26 @@ public class AuthInterceptor implements HandlerInterceptor { } } + /** + * handler 执行后调用,出现异常不调用 + */ @SuppressWarnings("NullableProblems") @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { - // 清理当前线程保存的用户数据 - UserHolder.clear(); HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); } + + /** + * DispatcherServlet 完全处理完请求后调用,出现异常照常调用 + */ + @SuppressWarnings("NullableProblems") + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) + throws Exception { + // 清理当前线程保存的用户数据 + UserHolder.clear(); + HandlerInterceptor.super.afterCompletion(request, response, handler, ex); + } + } diff --git a/src/main/java/io/github/xxyopen/novel/core/interceptor/TokenParseInterceptor.java b/src/main/java/io/github/xxyopen/novel/core/interceptor/TokenParseInterceptor.java index 6bf6851..9642f84 100644 --- a/src/main/java/io/github/xxyopen/novel/core/interceptor/TokenParseInterceptor.java +++ b/src/main/java/io/github/xxyopen/novel/core/interceptor/TokenParseInterceptor.java @@ -9,7 +9,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; /** * Token 解析拦截器 @@ -23,6 +22,7 @@ public class TokenParseInterceptor implements HandlerInterceptor { private final JwtUtils jwtUtils; + @SuppressWarnings("NullableProblems") @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -35,11 +35,16 @@ public class TokenParseInterceptor implements HandlerInterceptor { return HandlerInterceptor.super.preHandle(request, response, handler); } + /** + * DispatcherServlet 完全处理完请求后调用,出现异常照常调用 + */ + @SuppressWarnings("NullableProblems") @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, - ModelAndView modelAndView) throws Exception { + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) + throws Exception { // 清理当前线程保存的用户数据 UserHolder.clear(); - HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); + HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } + }