refactor: 优化mvc支持

This commit is contained in:
zhouhao
2025-08-06 17:54:26 +08:00
parent 4dda9eb683
commit 25af44d9e6
4 changed files with 40 additions and 12 deletions

View File

@@ -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> 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();
}
}
}