在Spring boot中集成Sa- Token

添加依赖

pom.xml中添加依赖:

1
2
3
4
5
6
<!-- Sa-Token -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.28.0</version>
</dependency>

修改配置文件

Sa-Token可以零配置启动,如有需要也可以定制化使用,在application.yml中添加以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Sa-Token配置
sa-token:
# token名称 (同时也是cookie名称)
token-name: satoken
# token有效期,单位s 默认30天, -1代表永不过期
timeout: 2592000
# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
activity-timeout: -1
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
is-share: false
# token风格
token-style: uuid
# 是否输出操作日志
is-log: false

集成Redis

Sa-token默认将数据保存在内存中,此模式读写速度最快,且避免了序列化与反序列化带来的性能消耗,但是此模式也有一些缺点,比如:

  1. 重启后数据会丢失
  2. 无法在分布式环境中共享数据

为此,Sa-Token提供了扩展接口,你可以轻松将会话数据存储在 Redis等专业的缓存中间件中, 做到重启数据不丢失,而且保证分布式环境下多节点的会话一致性。

添加依赖

  1. pom.xml中添加依赖:
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- Sa-Token 整合 Redis (使用jackson序列化方式) -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis-jackson</artifactId>
<version>1.28.0</version>
</dependency>

<!-- Sa-Token 整合 Redis (使用jdk默认序列化方式) -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis</artifactId>
<version>1.28.0</version>
</dependency>
  • 两个依赖选其一,jackson序列化后可读性更强,但兼容性稍差,默认序列化方式反之,根据具体需求选择。

  • Sa-Token-Redis 集成包的版本尽量与 Sa-Token-Starter 集成包的版本一致,否则可能出现兼容性问题.

  1. 为项目提供一个Redis实例化方案:

    1
    2
    3
    4
    5
    <!-- 提供Redis连接池 -->
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    </dependency>

修改配置文件

只有项目初始化了正确的Redis实例,Sa-Token才可以使用Redis进行数据持久化,参考以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 端口
spring:
# redis配置
redis:
# Redis数据库索引(默认为0)
database: 1
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码(默认为空)
# password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池最大连接数
max-active: 200
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 连接池中的最大空闲连接
max-idle: 10
# 连接池中的最小空闲连接
min-idle: 0

具体使用可参考官方文档:https://sa-token.dev33.cn/doc/index.html#/