sa-token/sa-token-doc/up/mutex-login.md

52 lines
1.8 KiB
Markdown
Raw Normal View History

2021-01-05 16:07:21 +08:00
# 同端互斥登录
2022-07-04 11:48:29 +08:00
如果你经常使用腾讯QQ就会发现它的登录有如下特点它可以手机电脑同时在线但是不能在两个手机上同时登录一个账号。 <br/>
同端互斥登录指的就是像腾讯QQ一样在同一类型设备上只允许单地点登录在不同类型设备上允许同时在线。
2021-01-05 16:07:21 +08:00
2022-05-09 17:35:29 +08:00
<button class="show-img" img-src="https://oss.dev33.cn/sa-token/doc/g/g3--mutex-login.gif">加载动态演示图</button>
2021-01-05 16:07:21 +08:00
---
## 具体API
2021-07-22 20:36:46 +08:00
在 Sa-Token 中如何做到同端互斥登录? <br/>
2022-04-23 17:26:48 +08:00
首先在配置文件中,将 `isConcurrent` 配置为false然后调用登录等相关接口时声明设备类型即可
2021-01-05 16:07:21 +08:00
2022-04-23 17:26:48 +08:00
#### 指定设备类型登录
2021-01-05 16:07:21 +08:00
``` java
2022-04-23 17:26:48 +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
2022-04-23 17:26:48 +08:00
#### 指定设备类型强制注销
2021-01-05 16:07:21 +08:00
``` java
2022-04-23 17:26:48 +08:00
// 指定`账号id`和`设备类型`进行强制注销
2021-10-11 01:09:28 +08:00
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
2022-04-23 17:26:48 +08:00
#### 查询当前登录的设备类型
2021-01-05 16:07:21 +08:00
``` java
2022-04-23 17:26:48 +08:00
// 返回当前token的登录设备类型
2021-01-31 23:28:42 +08:00
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
2022-04-23 17:26:48 +08:00
// 获取指定loginId指定设备类型端的tokenValue
2021-01-31 23:28:42 +08:00
StpUtil.getTokenValueByLoginId(10001, "APP");
2021-01-05 16:07:21 +08:00
```
2022-10-17 06:07:13 +08:00
---
<a class="case-btn" href="https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/MutexLoginController.java"
target="_blank">
2024-05-06 12:01:07 +08:00
本章代码示例Sa-Token 同端互斥登录 —— [ MutexLoginController.java ]
2022-10-17 06:07:13 +08:00
</a>