当前位置: 首页 > news >正文

【Sa-Token】学习笔记05 - 踢人下线源码解析

目录

前言

强制注销

踢人下线

源码解析


前言

所谓踢人下线,核心操作就是找到指定 loginId 对应的 Token,并设置其失效。

上图为踢人下线后,前端应该用图像给出来让用户重新登录,而不是让前端收到一个描述着被下线

JSON

强制注销

StpUtil.logout(10001);                    // 强制指定账号注销下线 
StpUtil.logout(10001, "PC");              // 强制指定账号指定端注销下线 
StpUtil.logoutByTokenValue("token");      // 强制指定 Token 注销下线 

踢人下线

StpUtil.kickout(10001);                    // 将指定账号踢下线 
StpUtil.kickout(10001, "PC");              // 将指定账号指定端踢下线
StpUtil.kickoutByTokenValue("token");      // 将指定 Token 踢下线

强制注销 和 踢人下线 的区别在于:

  • 强制注销等价于对方主动调用了注销方法,再次访问会提示:Token无效。

  • 踢人下线不会清除Token信息,而是将其打上特定标记,再次访问会提示:Token已被踢下线。

源码解析

StpUtils.kickout根据loginId踢人下线,StpUtils调用StpLogic进行踢人下线。

获取SaTokenConfig配置类,构建SaLogoutParameter对象,例如:注销范围、如果token已被

冻结是否保留操作、注销token是否保留对应Token-Session。

 logoutParameter设置注销类型为踢人下线。

根据sessionId从SaTokenDao获取SaSession,SaTokenDao从IOC里面获取,如果获取不到就使

用默认的SaTokenDaoDefaultImpl(),默认将数据存储在内存,存储在内存使用ConcurrentHashMap

中,一般我们会实现SaToKen接口,重写里面方法,将数据存储在Redis中,sa-token有集成了

Redis,我们导入sa-token-redis-template依赖即可。

获取登录设备终端信息,如果设备类型为空,则返回所有终端设备。

从Account-Session上清楚此设备信息,移除设备相关信息并且更新Session。 

清楚这个token的Token-Session对象,删除指定token的Token-Session。

根据注销模式走不同处理,踢人下线更新缓存中的token指向,改为-5。最后发布订阅时间:xxx账

号被踢下线。

最后判断一下这个Account-Session还有没有客户端登录,如果没有直接注销这个Account-

Session。

相关文章:

  • STM32嵌入式
  • JUC复习及面试题学习
  • OpenCV基础01-图像文件的读取与保存
  • 高并发场景下重试策略的演进设计
  • 谷歌相机最新版:专业摄影,一键掌握
  • 基于 Spring Boot 瑞吉外卖系统开发(五)
  • typeScript基础(类型)
  • 2025年人工智能指数报告:技术突破与社会变革的全景透视
  • 011数论——算法备赛
  • webgl入门实例-矩阵在图形学中的作用
  • INFINI Console 系统集群状态异常修复方案
  • 开源的 PDF 文件翻译软件
  • 1.Vue自动化工具安装(Vue-cli)
  • STM32配置系统时钟
  • 【刷题Day21】TCP(浅)
  • [Windows] Adobe Camera Raw 17.2 win/Mac版本
  • 基于一致性哈希算法原理和分布式系统容错机制
  • 探秘C#用户定义类型:突破预定义的边界
  • QML--全局对象Qt
  • 一个Nuxt3 SSR服务端渲染简洁好用的开源个人博客系统 交互设计体验简单 腾讯markdown编辑器 支持drawio画图
  • 陈杨梅:刷到“棉花糖爸爸”寻女视频,隐约觉得自己就是爸爸要找的孩子
  • 全球前瞻|中国印尼举行首次“2+2”部长级会议,美乌将签署矿产协议
  • 专访|松重丰:“美食家”不孤独,他在自由地吃饭
  • 成都一医院孕妇产下七胞胎?涉事医院辟谣:信息不实已举报
  • “杭州六小龙”爆火出圈后,浙江高规格部署人工智能发展
  • 推动中阿合作“向新而行”,这场论坛在上海松江举行