From 25af44d9e63cef44a75d71bd792a370821574675 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Wed, 6 Aug 2025 17:54:26 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96mvc=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorization/token/UserTokenHolder.java | 13 ++++++++----- .../basic/web/WebUserTokenInterceptor.java | 18 +++++++++++++++--- hsweb-core/pom.xml | 7 +++++++ pom.xml | 14 ++++++++++---- 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/UserTokenHolder.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/UserTokenHolder.java index b60b32e2a..4acd9138c 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/UserTokenHolder.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/UserTokenHolder.java @@ -2,7 +2,9 @@ package org.hswebframework.web.authorization.token; import org.hswebframework.web.context.ContextHolder; -import org.hswebframework.web.context.ContextUtils; +import reactor.util.context.Context; + +import java.io.Closeable; /** * @author zhouhao @@ -13,12 +15,13 @@ public final class UserTokenHolder { } public static UserToken currentToken() { - return ContextHolder.current().getOrDefault(UserToken.class,null); + return ContextHolder + .current() + .getOrDefault(UserToken.class, null); } - public static UserToken setCurrent(UserToken token) { - ContextUtils.currentContext().put(UserToken.class, token); - return token; + public static Closeable makeCurrent(UserToken token) { + return ContextHolder.makeCurrent(Context.of(UserToken.class,token)); } } diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/web/WebUserTokenInterceptor.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/web/WebUserTokenInterceptor.java index b1e37eebe..fa2bf06b6 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/web/WebUserTokenInterceptor.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/web/WebUserTokenInterceptor.java @@ -12,6 +12,8 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; +import javax.annotation.Nonnull; +import java.io.Closeable; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -23,6 +25,8 @@ import java.util.stream.Collectors; */ public class WebUserTokenInterceptor implements HandlerInterceptor { + static final String TOKEN_ATTR = WebUserTokenInterceptor.class.getName() + ".token"; + private final UserTokenManager userTokenManager; private final List userTokenParser; @@ -84,14 +88,22 @@ public class WebUserTokenInterceptor implements HandlerInterceptor { } if (null != userToken) { userTokenManager.touch(token).subscribe(); - UserTokenHolder.setCurrent(userToken); + request.setAttribute( + TOKEN_ATTR, UserTokenHolder.makeCurrent(userToken) + ); } } return true; } @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - UserTokenHolder.setCurrent(null); + public void afterCompletion(HttpServletRequest request, + @Nonnull HttpServletResponse response, + @Nonnull Object handler, + Exception ex) throws Exception { + Object closable = request.getAttribute(TOKEN_ATTR); + if (closable instanceof Closeable c) { + c.close(); + } } } diff --git a/hsweb-core/pom.xml b/hsweb-core/pom.xml index f6197b460..3ebae68de 100644 --- a/hsweb-core/pom.xml +++ b/hsweb-core/pom.xml @@ -15,6 +15,13 @@ 核心包 + + + com.github.spotbugs + spotbugs-annotations + 4.9.3 + + org.javassist javassist diff --git a/pom.xml b/pom.xml index 5ee0b0ace..b1f71b774 100644 --- a/pom.xml +++ b/pom.xml @@ -80,9 +80,9 @@ 17 ${java.version} - 3.4.0 + 3.4.8 - 3.30.1-GA + 3.30.2-GA 1.2.83 2.3.232 @@ -421,7 +421,7 @@ com.google.guava guava - 32.0.0-jre + 33.4.8-jre @@ -489,7 +489,13 @@ org.apache.commons commons-collections4 - 4.4 + 4.5.0 + + + + org.apache.commons + commons-lang3 + 3.18.0