SpringBoot整合sa-token,Redis:解决重启项目丢失登录态问题

SpringBoot整合sa-token,Redis:解决重启项目丢失登录态问题

  • 1. 痛点直击:为什么登录状态会消失?
  • 2.实现方案
    • 2.1.导入依赖
    • 2.2.新增yml配置文件
  • 3.效果图
  • 4.结语

大家好!我是向阳,一个想成为优秀全栈开发工程师的有志青年!	
今天来说一说如何来解决SpringBoot整合sa-token,Redis:解决重启项目丢失登录态问题。

1. 痛点直击:为什么登录状态会消失?

我们上一节当中,我们把token保存到了local storage当中,每次发起请求的时候,请求头会携带上这个token去请求后端,来校验我们的用户身份,但是当我们服务器端重启时,我们的token和session会话就会丢失掉了,我们就无法识别到用户对应的会话和token。

sa-token存储token的原理是,如果你没有配置redis,token和对应的session会话那么就会存到本地的JVM当中,所以这也就是每次需要重新登录的原因。

Sa-Token + Redis组合拳 通过将会话数据持久化到Redis,实现:

✔️ 服务重启无感登录

✔️ 分布式会话一致性

✔️ 故障恢复零感知

2.实现方案

2.1.导入依赖

我们这里直接实现的是权限缓存与业务缓存分离的依赖包,如果你不需要分离,不要导入sa-token-alone-redis,请导入下面这个依赖包。


<dependency>
    <groupId>cn.dev33groupId>
    <artifactId>sa-token-redis-templateartifactId>
    <version>1.41.0version>
dependency>

权限缓存与业务缓存分离的依赖包。
注意:导入这个依赖包后,不要导入上面那个依赖包了,权限缓存与业务缓存分离的依赖包里面包含sa-token-redis-template这个依赖包,同时导入会引发冲突问题。


<dependency>
    <groupId>cn.dev33groupId>
    <artifactId>sa-token-alone-redisartifactId>
    <version>1.41.0version>
dependency>

导入通用依赖包,redis连接池(必须!!!),还有自定义序列化方案,官方推荐使用jackson,当然你还可以去集成fastjson、fastjson2。
注意:目前 Sa-Token-Alone-Redis 仅对以下插件有 Redis 分离效果:

  • sa-token-redis
  • sa-token-redis-jackson
  • sa-token-redis-fastjson
  • sa-token-redis-fastjson2

<dependency>
    <groupId>org.apache.commonsgroupId>
     <artifactId>commons-pool2artifactId>
     <version>1.41.0version>
dependency>
<dependency>
    <groupId>cn.dev33groupId>
    <artifactId>sa-token-redis-jacksonartifactId>
    <version>1.41.0version>
dependency>

2.2.新增yml配置文件

我们来新增redis配置文件 和 sa-token权限缓存与业务缓存分离的配置。
注意:我这里使用的是springboot3,如果你使用的是springboot2版本,redis配置去掉data这一层,也就是spring.redis.port。

sa-token:
  # 与前两篇文章的配置保持一致...
  # 新增下面配置
  alone-redis:
    # Redis数据库索引(默认为0)
    database: 12
    # Redis服务器地址
    host: localhost
    # Redis服务器连接端口
    port: 6379
    # 连接超时时间
    timeout: 10s
# springboot3 如果是springboot2,去掉data这一层
spring:
  data:
    redis:
      port: 6379
      host: localhost
      connect-timeout: 10s
      database: 11

3.效果图

接下来我们启动项目正常登录就可以了,redis框架会自动为我们保存用户的token以及登录态,可以看到保存的用户登录态是在12号库中,与我们上面配置的一致,与业务缓存是隔离开的。

SpringBoot整合sa-token,Redis:解决重启项目丢失登录态问题_第1张图片

4.结语

到这里我们就成功集成了redis,让redis保持我们用户的登录态,我们项目在每次重启时,前端的就不用每次去重新登录。

下一章,我们来聊聊sa-token框架的路由拦截鉴权。

——[作者]:向阳256
——⏳[更新]:2025.4.7
——本人技术有限,如果有不对指正需要更改或者有更好的方法,欢迎到评论区留言。

你可能感兴趣的:(sa-token框架,后端,spring,boot,redis,后端,sa-token,java,maven)