| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package cc.uncarbon.interceptor;
- import cc.uncarbon.framework.core.context.UserContext;
- import cc.uncarbon.framework.core.context.UserContextHolder;
- import cc.uncarbon.framework.web.util.IPUtil;
- import cc.uncarbon.module.sys.util.AdminStpUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.web.servlet.AsyncHandlerInterceptor;
- import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * 从请求头解析并赋值到用户上下文
- * 其实就是"DefaultSaTokenParseInterceptor"改个名, 工具类换成"AdminStpUtil"
- * @author Uncarbon
- */
- @Slf4j
- public class AdminSaTokenParseInterceptor implements AsyncHandlerInterceptor {
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
- if (handler instanceof ResourceHttpRequestHandler) {
- // 直接放行静态资源
- return true;
- }
- // 从请求头解析用户上下文
- if (AdminStpUtil.isLogin()) {
- UserContext currentUser = (UserContext) AdminStpUtil.getSession().get("userContext");
- log.debug("[SA-Token][Admin] 从请求头解析出用户上下文 >> {}", currentUser);
- currentUser
- .setClientIP(IPUtil.getClientIPAddress(request))
- ;
- UserContextHolder.setUserContext(currentUser);
- } else {
- UserContextHolder.setUserContext(null);
- }
- return true;
- }
- }
|