同端互斥登录的文档

This commit is contained in:
shengzhang
2021-01-05 16:07:21 +08:00
parent 9733c8777a
commit 82ee90f712
4 changed files with 44 additions and 4 deletions

View File

@@ -14,6 +14,7 @@
- [无Cookie模式(前后台分离)](/use/not-cookie)
- [模拟他人](/use/mock-person)
- [多账号验证](/use/many-account)
- [同端互斥登录](/use/mutex-login)
- [注解式鉴权](/use/at-check)
- [花式token](/use/token-style)
- [框架配置](/use/config)

View File

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