Files
sa-token/sa-token-doc/doc/use/mutex-login.md
2021-04-26 14:30:07 +08:00

44 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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