Spring Boot 整合 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.PropertySource;
import org.springframework.core.env.Environment;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.filter.SaServletFilter;
@Configuration
@PropertySource("classpath:sa-token.properties")
public class SaTokenConfigure implements WebMvcConfigurer {
@Value("${sa-token.token-name}")
private String tokenName;
@Value("${sa-token.timeout}")
private long timeout;
// 注册Sa-Token全局配置
@Bean
public SaTokenConfig getSaTokenConfig(Environment env) {
return new SaTokenConfig()
.setTokenName(tokenName) // token名称
.setTimeout(timeout) // session超时时间
.setActivityTimeout(-1); // 活跃认证时间为-1,即永不过期
}
// 注册Sa-Token拦截器
@Bean
public SaServletFilter getSaServletFilter() {
return new SaServletFilter()
.addExclude("*.js", "*.css", "/images/**", "/fonts/**") // 排除不进行Token认证的url路径
.addInclude("*.do"); // 包含进行Token认证的url路径 (如果不设置, 则对所有请求都进行认证)
}
// 实现StpInterface接口,重写获取用户id的方法
@Override
public Object getLoginId(String loginType) {
// 根据不同的登录类型获取用户id
// 例如:如果是token登录类型,那么可以从http header中获取token并解析用户id
// 这里仅为示例,具体实现根据项目需求来编写
return null;
}
// 注册Sa-Token管理器
@Bean
public SaManager getSaManager() {
return new SaManager();
}
// 其他配置...
}
这段代码展示了如何在Spring Boot项目中整合SA-Token。首先,通过@PropertySource
注解引入配置文件,然后通过@Value
注解读取配置文件中的参数。接着,实现了WebMvcConfigurer
接口,并重写了addExclude
和addInclude
方法来配置拦截器,最后通过@Bean
注解注册了SaTokenConfig
、SaServletFilter
和SaManager
。这样就可以在Spring Boot应用中使用SA-Token进行用户认证和会话管理。
评论已关闭