2021-01-05 16:07:21 +08:00
|
|
|
|
# 同端互斥登录
|
|
|
|
|
|
|
|
|
|
如果你经常使用腾讯QQ,就会发现它的登录有如下特点:它可以手机电脑同时在线,但是不能在两个手机上同时登录一个账号 <br/>
|
|
|
|
|
同端互斥登录,指的就是像腾讯QQ一样,在同一类型设备上只允许单地点登录,在不同类型设备上允许同时在线
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 具体API
|
|
|
|
|
|
2021-07-22 20:36:46 +08:00
|
|
|
|
在 Sa-Token 中如何做到同端互斥登录? <br/>
|
2021-06-16 17:48:21 +08:00
|
|
|
|
首先在配置文件中,将 `isConcurrent` 配置为false,然后调用登录等相关接口时声明设备标识即可:
|
2021-01-05 16:07:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 指定设备标识登录
|
|
|
|
|
``` java
|
2021-01-31 23:28:42 +08:00
|
|
|
|
// 指定`账号id`和`设备标识`进行登录
|
2021-06-16 16:24:39 +08:00
|
|
|
|
StpUtil.login(10001, "PC");
|
2021-01-05 16:07:21 +08:00
|
|
|
|
```
|
2021-07-22 20:36:46 +08:00
|
|
|
|
调用此方法登录后,同设备的会被顶下线(不同设备不受影响),再次访问系统时会抛出 `NotLoginException` 异常,场景值=`-4`
|
2021-01-05 16:07:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 指定设备标识强制注销
|
|
|
|
|
``` java
|
2021-10-11 01:09:28 +08:00
|
|
|
|
// 指定`账号id`和`设备标识`进行强制注销
|
|
|
|
|
StpUtil.logout(10001, "PC");
|
2021-01-05 16:07:21 +08:00
|
|
|
|
```
|
2021-10-11 01:09:28 +08:00
|
|
|
|
如果第二个参数填写null或不填,代表将这个账号id所有在线端强制注销,被踢出者再次访问系统时会抛出 `NotLoginException` 异常,场景值=`-2`
|
2021-01-05 16:07:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询当前登录的设备标识
|
|
|
|
|
``` java
|
2021-01-31 23:28:42 +08:00
|
|
|
|
// 返回当前token的登录设备
|
|
|
|
|
StpUtil.getLoginDevice();
|
2021-01-05 16:07:21 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
2021-07-22 20:36:46 +08:00
|
|
|
|
#### Id 反查 Token
|
2021-01-05 16:07:21 +08:00
|
|
|
|
``` java
|
2021-01-31 23:28:42 +08:00
|
|
|
|
// 获取指定loginId指定设备端的tokenValue
|
|
|
|
|
StpUtil.getTokenValueByLoginId(10001, "APP");
|
2021-01-05 16:07:21 +08:00
|
|
|
|
```
|
|
|
|
|
|