【微服务】springboot 整合 SA-Token 使用详解
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.spring.SaTokenSpringUtil;
/**
* Sa-Token 配置类
*/
@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {
// 配置Sa-Token的全局配置参数
@Bean
public SaTokenConfig getSaTokenConfig() {
return new SaTokenConfig()
.setTokenName("satoken")
.setTimeout(1800) // 指定token的默认超时时间为30分钟
.setActivityTimeout(-1); // 指定用户活跃时间为-1,代表永不过期
}
// 注册Sa-Token的接口实现
@Bean
public StpInterface getStpInterface() {
return new StpInterface() {
// 返回一个用户的唯一标识,如用户id
@Override
public Object getLoginId(Object user) {
return ((User) user).getId();
}
// 返回此用户的权限字符串集合,例如:Set<String>
@Override
public List<String> getPermissionList(Object loginId, String loginType) {
// 这里可以根据实际情况,从数据库获取用户权限集合
return null;
}
// 返回此用户的角色字符串集合,例如:Set<String>
@Override
public List<String> getRoleList(Object loginId, String loginType) {
// 这里可以根据实际情况,从数据库获取用户角色集合
return null;
}
};
}
// 注册Sa-Token的SpringUtil
@Bean
public SaTokenSpringUtil getSaTokenSpringUtil() {
return new SaTokenSpringUtil();
}
// 注册Sa-Token的拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册Sa-Token的Session拦截器,打开注解功能
registry.addInterceptor(new SaInterceptor(SaManager.getConfig()))
.addPathPatterns("/**") // 拦截所有请求
.excludePathPatterns("/static/**", "/login"); // 排除静态资源与登录接口
}
}
这段代码展示了如何在Spring Boot项目中配置和使用Sa-Token。首先,我们定义了一个SaTokenConfigure
类,实现了WebMvcConfigurer
接口,在这个类中我们配置了Sa-Token的全局配置参数,并注册了自定义的
评论已关闭