CustomInterceptorConfiguration.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package cc.uncarbon.config;
  2. import cc.uncarbon.framework.core.props.HelioProperties;
  3. import cc.uncarbon.interceptor.AdminSaTokenParseInterceptor;
  4. import cc.uncarbon.interceptor.DefaultSaTokenParseInterceptor;
  5. import cc.uncarbon.module.adminapi.constant.AdminApiConstant;
  6. import cc.uncarbon.module.appapi.constant.AppApiConstant;
  7. import cc.uncarbon.module.sys.constant.SysConstant;
  8. import cn.dev33.satoken.interceptor.SaInterceptor;
  9. import cn.dev33.satoken.stp.StpUtil;
  10. import lombok.RequiredArgsConstructor;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  13. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  14. /**
  15. * 将自定义拦截器加入到拦截器队列中
  16. *
  17. * @author Uncarbon
  18. */
  19. @Configuration
  20. @RequiredArgsConstructor
  21. public class CustomInterceptorConfiguration implements WebMvcConfigurer {
  22. private final HelioProperties helioProperties;
  23. @Override
  24. public void addInterceptors(InterceptorRegistry registry) {
  25. /*
  26. 1. 通用请求头解析,设定用户、租户上下文
  27. */
  28. registry
  29. .addInterceptor(new DefaultSaTokenParseInterceptor())
  30. // @since 1.7.3 fix: 访问除 /app/** 以外的路由时,不会清除复用线程中残留的用户态
  31. .addPathPatterns("/**");
  32. registry
  33. .addInterceptor(new AdminSaTokenParseInterceptor())
  34. .addPathPatterns(
  35. // 兼容旧的API路由前缀
  36. SysConstant.SYS_MODULE_CONTEXT_PATH + "/**",
  37. AdminApiConstant.HTTP_API_URL_PREFIX + "/**"
  38. );
  39. /*
  40. 2. 注解拦截器,启用注解功能
  41. */
  42. registry
  43. .addInterceptor(new SaInterceptor())
  44. .addPathPatterns("/**");
  45. /*
  46. 3. /app/** 路由拦截器, 使几乎所有接口都需要登录
  47. 放行接口请在配置文件的 helio.security.exclude-routes 中设置
  48. @see https://sa-token.cc/doc.html#/use/route-check
  49. */
  50. registry
  51. .addInterceptor(new SaInterceptor(
  52. (handler) -> StpUtil.checkLogin()
  53. ))
  54. .addPathPatterns(AppApiConstant.HTTP_API_URL_PREFIX + "/**")
  55. .excludePathPatterns(helioProperties.getSecurity().getExcludeRoutes());
  56. }
  57. }