Springboot 权限认证框架 -- SA-Token 集成 Redis(二)

引言

SA-Token 系列文章:

  • Springboot 权限认证框架 – SA-Token 简介(一)

在上一篇文章中,我们可能已经讨论了如何在Spring Boot项目中集成SA-Token权限认证框架。接下来,我们将继续深入讨论如何将SA-Token与Redis集成,以便将用户的会话信息存储在Redis中,从而实现会话的共享和持久化。

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

  • 重启后数据会丢失。
  • 无法在分布式环境中共享数据。

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

二、 集成 Redis

方式1、Sa-Token 整合 Redis (使用 jdk 默认序列化方式)


<dependency>
    <groupId>cn.dev33groupId>
    <artifactId>sa-token-redisartifactId>
    <version>1.38.0version>
dependency>
  • 优点:兼容性好,
  • 缺点:Session 序列化后基本不可读,对开发者来讲等同于乱码。

方式2、Sa-Token 整合 Redis(使用 jackson 序列化方式)


<dependency>
    <groupId>cn.dev33groupId>
    <artifactId>sa-token-redis-jacksonartifactId>
    <version>1.38.0version>
dependency>

  • 优点:Session 序列化后可读性强,可灵活手动修改
  • 缺点:兼容性稍差。

3. 集成 Redis 请注意:

  1. 无论使用哪种序列化方式,你都必须为项目提供一个 Redis 实例化方案,例如:

<dependency>
    <groupId>org.apache.commonsgroupId>
    <artifactId>commons-pool2artifactId>
dependency>

Redis 配置请参考:Redis 集成及配置

  1. 引入了依赖,还需要为 Redis 配置连接信息吗?

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

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

4. 配置Sa-Token单独使用的Redis连接:

  1. 添加 pom 依赖:

            <dependency>
                <groupId>cn.dev33groupId>
                <artifactId>sa-token-alone-redisartifactId>
                <version>${sa-token-sso.version}version>
            dependency>
  1. 配置文件 application.yml :
# sa-token配置
sa-token:
  token-name: satoken
  # timeout: -1
  # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
  active-timeout: 1800
  # SSO-相关配置
  sso:
    # SSO-Server端 统一认证地址
    auth-url: http://127.0.0.1:8888/auth/api/sso/auth
    # 是否打开单点注销接口
    isSlo: true

  # 配置Sa-Token单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
  alone-redis:
    # Redis数据库索引 (默认为0)
    database: 2
    # Redis服务器地址
    host: 127.0.0.1
    # Redis服务器连接端口
    port: 6379
    # Redis服务器连接密码(默认为空)
    #password: 
    # 连接超时时间
    timeout: 10s

SA-Token 系列文章:

  • Springboot 权限认证框架 – SA-Token 简介(一)

你可能感兴趣的:(springboot,spring,boot,redis,后端,sa-token)