mirror of
https://github.com/hs-web/hsweb-framework.git
synced 2026-06-04 03:43:14 +08:00
refactor: 优化mvc支持
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user