SpringSecurity+ oauth2实现同账号多端同时登录

问题复现

  • 项目中使用了app+ pc+ 小程序,当用户同时登录app+pc时 其中一端会被挤下线。
    在这里插入图片描述

出现原因

  • 我们使用的是redis存储token,由于redis生token算法原因,多端登录返回同一个token,导致另外一端被挤下线,出现文章开头的情况。
  • 下图就是security基于redis生成token的方式
    在这里插入图片描述
    在这里插入图片描述
  • 可见:extractKey方法中使用values去生成token,多端登录参数进入values都一样
  • 所以我们只需要重写token生成规则即可。

解决方式:重写token生成规则

  • 加入登录端标识,每个端登录都需要传不一样的标识,比如:app:1,pc:2
  • 这样不同端生成token不一样不会相互影响
/**
 * @ClassName: CustomAuthenticationKeyGenerator 
 * @Description: 自定义token生成规则
 * @author: ruyi
 * @date: 2022/2/28 19:25
 */
public class CustomAuthenticationKeyGenerator extends DefaultAuthenticationKeyGenerator {
   

    private static final String SCOPE = "scope";

    private static final String USERNAME = 
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

甜甜掉在星星上

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值