❤️ 踢人下线
踢人下线,强制注销
- 踢人下线 : 不会清除 token ,而是给 token 打上 tag,再次访问时会提示被踢下线了
- 强制注销 : 清除 token
StpUtil.kickout(账号id)StpUtil.kickout(账号id,端)下线 pc 端,还是 ……StpUtil.kickoutByTokenValue(token)指定 token 下线
❤️ 全局监听器
通过注册侦听器,你可以订阅一些关键性事件(用户登录、退出、被踢下线 ……)
- 新建监听器,并注入到 IOC 容器中
java
/**
* 安全领域 - SaToken 监听器的实现
*/
@Component
public class MySaTokenListener extends SaTokenListenerForSimple {
/**
* 每次登录时触发
*
* @param loginType 登录类型
* @param loginId userId
* @param tokenValue token
* @param loginModel 登录设备
*/
public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) {
……
}
/**
* 每次被踢下线时触发
*/
public void doKickout(String loginType, Object loginId, String tokenValue) {
System.out.println("---------- 自定义侦听器实现 doKickout");
}
}❤️ 三大作用域
SaStorage请求作用域:存储的数据只在一次请求内有效SaSession会话作用域:存储的数据在一次会话范围内有效SaApplication全局作用域:存储的数据在全局范围内有效
SaStorage
[!quote] SaStorage SaStorage 中存储的数据与用户无关,类似于一个请求级别的键值对容器
- SaStorage 中存储的数据只在一次请求范围内有效,请求结束后数据自动清除
Session
[!quote] Session
Session 是会话中专业的数据缓存组件,通过 Session 我们可以很方便的缓存一些高频读写数据,提高程序性能
Sa-Token Session 与 JSP 中的 HttpSession 不同:
- Sa-Token 只在调用
StpUtil.login(id)登录会话时才会产生 Session- 产生的 Session,是分配给账号 id 的,也就是说在 PC、APP 上登录的同一账号所得到的 Session 也是同一个
- Sa-Token 支持 Cookie、Header、body 三个途径提交 Token,所以可以做到一个设备登录多个账号
Session 分类
Account-Session :以账号 id 为单位的 Session
SaSession StpUtil.getSession()获取当前账号的 Account-SessionSaSession StpUtil.getSessionByLoginId(账号id)获取指定账号的 Account-Session
java
SaSession session = StpUtil.getSession();
// 从 Account-Session 中读取、写入数据
session.set("name", "张三");
session.get("name");Token-Session :以 token 为单位的 Session。token 续签,则 Account-Session、Token-Session 都会被续签
StpUtil.getTokenSession()StpUtil.getTokenSessionByToken(token)获取指定 token 的 session
Custom-Session :是一种自定义 Session,只要两个自定义 Session 的 id 一致,它们就是同一个 Session
SaSession 对象
#问题 理论最大可以支持多少个 session
SaApplication
[!quote] SaApplication SaApplication 是应用级别的,和是否登录也无关
- SaApplication 存储的数据在全局范围内有效,应用关闭后数据自动清除
❤️ 缓存层扩展
缓存层扩展可以有很多选择,只需引入依赖即可,api 无需更改
- 整合 redisson 将数据放到 redis 中
xml
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-redisson-spring-boot-starter</artifactId>
<version>1.42.0</version>
</dependency>