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); } + }