AdminSaTokenParseInterceptor.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package cc.uncarbon.interceptor;
  2. import cc.uncarbon.framework.core.context.UserContext;
  3. import cc.uncarbon.framework.core.context.UserContextHolder;
  4. import cc.uncarbon.framework.web.util.IPUtil;
  5. import cc.uncarbon.module.sys.util.AdminStpUtil;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.web.servlet.AsyncHandlerInterceptor;
  8. import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. /**
  12. * 从请求头解析并赋值到用户上下文
  13. * 其实就是"DefaultSaTokenParseInterceptor"改个名, 工具类换成"AdminStpUtil"
  14. * @author Uncarbon
  15. */
  16. @Slf4j
  17. public class AdminSaTokenParseInterceptor implements AsyncHandlerInterceptor {
  18. @Override
  19. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
  20. if (handler instanceof ResourceHttpRequestHandler) {
  21. // 直接放行静态资源
  22. return true;
  23. }
  24. // 从请求头解析用户上下文
  25. if (AdminStpUtil.isLogin()) {
  26. UserContext currentUser = (UserContext) AdminStpUtil.getSession().get("userContext");
  27. log.debug("[SA-Token][Admin] 从请求头解析出用户上下文 >> {}", currentUser);
  28. currentUser
  29. .setClientIP(IPUtil.getClientIPAddress(request))
  30. ;
  31. UserContextHolder.setUserContext(currentUser);
  32. } else {
  33. UserContextHolder.setUserContext(null);
  34. }
  35. return true;
  36. }
  37. }