Spring Boot接入SaToken简单使用

一直以来开发使用的框架要不就是shiro,要不就是spring security;最近听小伙伴说有个开源的权限框架SaToken十分好使,正好赶上开新项目,所以接入使用一下。

SaToken官网

https://sa-token.cc/

接入流程十分简单,在官网上也有完整教程,有特殊接入需求的,也建议上官网查阅文档哈。

maven依赖

saToken默认将数据保存在内存中,但我这边选用的是存入Redis中,所以还需要在sa-token-spring-boot-starter的基础上引入sa-token-dao-redis-jackson和commons-pool2,如下:

<!-- Sa-Token 权限认证,在线文档:https://sa-token.cc -->
<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot-starter</artifactId>
    <version>1.34.0</version>
</dependency>
<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-dao-redis-jackson</artifactId>
    <version>1.34.0</version>
</dependency>
<!-- 提供Redis连接池 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.6.2</version>
</dependency>

配置文件信息

我这边由于项目规范原因,配置使用的properties的形式,如需yaml形式,请自行上官网查阅哈

sa-token基础配置

# token名称 (同时也是cookie名称)
sa-token.token-name=mytoken
# token有效期,单位s 默认30天, -1代表永不过期 
sa-token.timeout=2592000
# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
sa-token.activity-timeout=-1
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) 
sa-token.is-concurrent=true
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) 
sa-token.is-share=true
# token风格
sa-token.token-style=uuid
# 是否输出操作日志 
sa-token.is-log=false

因为使用了redis,所以还需要配置redis

# Redis数据库索引(默认为0)
spring.redis.database=1
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
# spring.redis.password=my123456
# 连接超时时间
spring.redis.timeout=10s
# 连接池最大连接数
spring.redis.lettuce.pool.max-active=200
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.lettuce.pool.max-wait=-1ms
# 连接池中的最大空闲连接
spring.redis.lettuce.pool.max-idle=10
# 连接池中的最小空闲连接
spring.redis.lettuce.pool.min-idle=0

Config配置拦截及白名单

因为项目的请求路径规范以及引入了swagger的缘故,需要自行配置拦截和白名单,如下:

@Configuration
public class myAuthConfigure implements WebMvcConfigurer {
    // 注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。
        registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin()))
                .addPathPatterns("/**/swagger-ui.html","/**/swagger-resources/**",
                    "/**/swagger-ui/index.html","/**/swagger/**","/**/v*/api-docs","/webjars/springfox-swagger-ui/**")
                .excludePathPatterns("/auth/login"); 
    }
}

如果需要根据角色等等配置权限的话,可自行上官网查阅,saToken支持很灵活多样的配置。

主要使用方法

//登录
StpUtil.login(userId); 
//登出
StpUtil.logout();
//获取当前是否登录
StpUtil.isLogin();
//检验当前会话是否已经登录
StpUtil.checkLogin();

简单使用的话,就这样就差不多了,需要深入使用的话,还是请移步官网查阅文档,官网文档十分之详细。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值