sa-token利用WebSocket提示过期

  • 项目背景

项目接入sa-token之后,当token过期后,需弹出框“token会话过期”。首先放一下效果图
在这里插入图片描述
操作步骤

如果不想写corn定时任务,可以用这个来搞搞

  1. 修改Redis配置文件,使其支持 key 过期事件的监听

找到 redis.windows.conf或redis.conf 文件,搜索 “notify-keyspace-events”找到原本的notify-keyspace-events " ",修改为notify-keyspace-events Ex

原本的
在这里插入图片描述

修改之后的

在这里插入图片描述

  1. 添加依赖
<!-- redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 继承KeyExpirationEventMessageListener监听类

在sa-token官方文档中有一个全局监听类MySaTokenListener
全局监听类

在这个MySaTokenListener类里面再继承KeyExpirationEventMessageListener

关键代码如下

    @Override
    public void onMessage(Message message, byte[] bytes) {
        //获取失效key名称
        String expireKey = new String(message.getBody(), StandardCharsets.UTF_8);
        //获取key原本的value 获取不到 是null
        String expireKeyValue = redisTemplate.opsForValue().get("myKey");
         //我是根据tokenvalues作为主键ID的
        String[] split = expireKey.split(":");
        String s = split[split.length - 1];
        WebSocketServer.sendInfo(s, "token会话过期!!!");
        logger.info("expireKey---"+expireKey);
        logger.info("expireKeyValue---"+expireKeyValue);

    }

里面的代码我是用token作为主键来搞的,可根据自己的需求来搞

  1. 创建一个配置类RedisListenerConfig
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;

@Configuration
public class RedisListenerConfig {
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }
}
  1. 项目运行之后,查看控制台,如果有这样的输出,表示配置成功

在这里插入图片描述

我话讲完!谁赞成?谁反对?
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello Bug

谢谢老板,老板大气,老板硬邦邦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值