update 迁移 satoken 路由拦截到单独配置类

This commit is contained in:
疯狂的狮子li 2021-11-25 16:24:16 +08:00
parent a4cd5bd424
commit 450657f871
2 changed files with 45 additions and 35 deletions

View File

@ -1,15 +1,7 @@
package com.ruoyi.framework.config; package com.ruoyi.framework.config;
import cn.dev33.satoken.interceptor.SaAnnotationInterceptor;
import cn.dev33.satoken.interceptor.SaRouteInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.config.properties.SecurityProperties;
import com.ruoyi.framework.Interceptor.PlusWebInvokeTimeInterceptor; import com.ruoyi.framework.Interceptor.PlusWebInvokeTimeInterceptor;
import com.yomahub.tlog.web.interceptor.TLogWebInterceptor; import com.yomahub.tlog.web.interceptor.TLogWebInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfiguration;
@ -19,9 +11,6 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.Arrays;
import java.util.Collections;
/** /**
* 通用配置 * 通用配置
* *
@ -30,35 +19,12 @@ import java.util.Collections;
@Configuration @Configuration
public class ResourcesConfig implements WebMvcConfigurer { public class ResourcesConfig implements WebMvcConfigurer {
@Autowired
private SecurityProperties securityProperties;
// 注册sa-token的拦截器
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
// 全局链路跟踪拦截器 // 全局链路跟踪拦截器
registry.addInterceptor(new TLogWebInterceptor()); registry.addInterceptor(new TLogWebInterceptor());
// 全局访问性能拦截 // 全局访问性能拦截
registry.addInterceptor(new PlusWebInvokeTimeInterceptor()); registry.addInterceptor(new PlusWebInvokeTimeInterceptor());
// 注册路由拦截器自定义验证规则
registry.addInterceptor(new SaRouteInterceptor((request, response, handler) -> {
// 登录验证 -- 排除多个路径
SaRouter
// 获取所有的
.match(Collections.singletonList("/**"))
// 排除下不需要拦截的
.notMatch(Arrays.asList(securityProperties.getExcludes()))
.check(() -> {
Long userId = SecurityUtils.getUserId();
if(StringUtils.isNotNull(userId) ) {
long tokenTimeout = StpUtil.getTokenTimeout();
long tokenActivityTimeout = StpUtil.getTokenActivityTimeout();
System.out.println("剩余有效时间: " + tokenTimeout);
System.out.println("临时有效时间: " + tokenActivityTimeout);
}
});
})).addPathPatterns("/**");
registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**");
} }
@Override @Override

View File

@ -1,12 +1,56 @@
package com.ruoyi.framework.config; package com.ruoyi.framework.config;
import cn.dev33.satoken.interceptor.SaAnnotationInterceptor;
import cn.dev33.satoken.interceptor.SaRouteInterceptor;
import cn.dev33.satoken.jwt.StpLogicJwtForStyle; import cn.dev33.satoken.jwt.StpLogicJwtForStyle;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.config.properties.SecurityProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* sa-token 配置
*
* @author Lion Li
*/
@Configuration @Configuration
public class SaTokenConfig { public class SaTokenConfig implements WebMvcConfigurer {
@Autowired
private SecurityProperties securityProperties;
/**
* 注册sa-token的拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册路由拦截器自定义验证规则
registry.addInterceptor(new SaRouteInterceptor((request, response, handler) -> {
// 登录验证 -- 排除多个路径
SaRouter
// 获取所有的
.match("/**")
// 排除下不需要拦截的
.notMatch(securityProperties.getExcludes())
.check(() -> {
Long userId = SecurityUtils.getUserId();
if (StringUtils.isNotNull(userId)) {
long tokenTimeout = StpUtil.getTokenTimeout();
long tokenActivityTimeout = StpUtil.getTokenActivityTimeout();
System.out.println("剩余有效时间: " + tokenTimeout);
System.out.println("临时有效时间: " + tokenActivityTimeout);
}
});
})).addPathPatterns("/**");
registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**");
}
@Bean @Bean
public StpLogic getStpLogicJwt() { public StpLogic getStpLogicJwt() {