| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package cc.uncarbon.config;
- import cc.uncarbon.framework.core.props.HelioProperties;
- import cc.uncarbon.interceptor.AdminSaTokenParseInterceptor;
- import cc.uncarbon.interceptor.DefaultSaTokenParseInterceptor;
- import cc.uncarbon.module.adminapi.constant.AdminApiConstant;
- import cc.uncarbon.module.appapi.constant.AppApiConstant;
- import cc.uncarbon.module.sys.constant.SysConstant;
- import cn.dev33.satoken.interceptor.SaInterceptor;
- import cn.dev33.satoken.stp.StpUtil;
- import lombok.RequiredArgsConstructor;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
- /**
- * 将自定义拦截器加入到拦截器队列中
- *
- * @author Uncarbon
- */
- @Configuration
- @RequiredArgsConstructor
- public class CustomInterceptorConfiguration implements WebMvcConfigurer {
- private final HelioProperties helioProperties;
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- /*
- 1. 通用请求头解析,设定用户、租户上下文
- */
- registry
- .addInterceptor(new DefaultSaTokenParseInterceptor())
- // @since 1.7.3 fix: 访问除 /app/** 以外的路由时,不会清除复用线程中残留的用户态
- .addPathPatterns("/**");
- registry
- .addInterceptor(new AdminSaTokenParseInterceptor())
- .addPathPatterns(
- // 兼容旧的API路由前缀
- SysConstant.SYS_MODULE_CONTEXT_PATH + "/**",
- AdminApiConstant.HTTP_API_URL_PREFIX + "/**"
- );
- /*
- 2. 注解拦截器,启用注解功能
- */
- registry
- .addInterceptor(new SaInterceptor())
- .addPathPatterns("/**");
- /*
- 3. /app/** 路由拦截器, 使几乎所有接口都需要登录
- 放行接口请在配置文件的 helio.security.exclude-routes 中设置
- @see https://sa-token.cc/doc.html#/use/route-check
- */
- registry
- .addInterceptor(new SaInterceptor(
- (handler) -> StpUtil.checkLogin()
- ))
- .addPathPatterns(AppApiConstant.HTTP_API_URL_PREFIX + "/**")
- .excludePathPatterns(helioProperties.getSecurity().getExcludeRoutes());
- }
- }
|