mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-06-28 13:34:18 +08:00
feat: 新增 StpUtil.getTerminalInfo() 查询设备信息、StpUtil.getLoginDeviceId() 查询登录设备id
This commit is contained in:
parent
0229459d8d
commit
c2dea166e4
@ -2388,6 +2388,56 @@ public class StpLogic {
|
|||||||
session.forEachTerminalList(function);
|
session.forEachTerminalList(function);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回当前 token 指向的 SaTerminalInfo 设备信息,如果 token 无效则返回 null
|
||||||
|
*
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
public SaTerminalInfo getTerminalInfo() {
|
||||||
|
return getTerminalInfoByToken(getTokenValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回指定 token 指向的 SaTerminalInfo 设备信息,如果 Token 无效则返回 null
|
||||||
|
*
|
||||||
|
* @param tokenValue 指定 token
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
public SaTerminalInfo getTerminalInfoByToken(String tokenValue) {
|
||||||
|
// 1、如果 token 为 null,直接提前返回
|
||||||
|
if(SaFoxUtil.isEmpty(tokenValue)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2、判断 Token 是否有效
|
||||||
|
Object loginId = getLoginIdNotHandle(tokenValue);
|
||||||
|
if( ! isValidLoginId(loginId)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3、判断 Account-Session 是否存在
|
||||||
|
SaSession session = getSessionByLoginId(loginId, false);
|
||||||
|
if(session == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4、判断 Token 是否已被冻结
|
||||||
|
if(isFreeze(tokenValue)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5、遍历 Account-Session 上的客户端 token 列表,寻找当前 token 对应的设备类型
|
||||||
|
List<SaTerminalInfo> terminalList = session.terminalListCopy();
|
||||||
|
for (SaTerminalInfo terminal : terminalList) {
|
||||||
|
if(terminal.getTokenValue().equals(tokenValue)) {
|
||||||
|
return terminal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6、没有找到,还是返回 null
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回当前会话的登录设备类型
|
* 返回当前会话的登录设备类型
|
||||||
*
|
*
|
||||||
@ -2404,38 +2454,28 @@ public class StpLogic {
|
|||||||
* @return 当前令牌的登录设备类型
|
* @return 当前令牌的登录设备类型
|
||||||
*/
|
*/
|
||||||
public String getLoginDeviceTypeByToken(String tokenValue) {
|
public String getLoginDeviceTypeByToken(String tokenValue) {
|
||||||
// 1、如果 token 为 null,直接提前返回
|
SaTerminalInfo terminalInfo = getTerminalInfoByToken(tokenValue);
|
||||||
if(SaFoxUtil.isEmpty(tokenValue)) {
|
return terminalInfo == null ? null : terminalInfo.getDeviceType();
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// 2、获取此 token 对应的 loginId,如果为null,或者此token已被冻结,直接返回null
|
/**
|
||||||
Object loginId = getLoginIdNotHandle(tokenValue);
|
* 返回当前会话的登录设备 ID
|
||||||
if( ! isValidLoginId(loginId)) {
|
*
|
||||||
return null;
|
* @return /
|
||||||
}
|
*/
|
||||||
if(getTokenActiveTimeoutByToken(tokenValue) == SaTokenDao.NOT_VALUE_EXPIRE ) {
|
public String getLoginDeviceId() {
|
||||||
return null;
|
return getLoginDeviceIdByToken(getTokenValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3、获取这个账号的 Account-Session
|
/**
|
||||||
SaSession session = getSessionByLoginId(loginId, false);
|
* 返回指定 token 会话的登录设备 ID
|
||||||
|
*
|
||||||
// 4、为 null 说明尚未登录,当然也就不存在什么设备类型,直接返回 null
|
* @param tokenValue 指定token
|
||||||
if(session == null) {
|
* @return /
|
||||||
return null;
|
*/
|
||||||
}
|
public String getLoginDeviceIdByToken(String tokenValue) {
|
||||||
|
SaTerminalInfo terminalInfo = getTerminalInfoByToken(tokenValue);
|
||||||
// 5、遍历 Account-Session 上的客户端 token 列表,寻找当前 token 对应的设备类型
|
return terminalInfo == null ? null : terminalInfo.getDeviceId();
|
||||||
List<SaTerminalInfo> terminalList = session.terminalListCopy();
|
|
||||||
for (SaTerminalInfo terminal : terminalList) {
|
|
||||||
if(terminal.getTokenValue().equals(tokenValue)) {
|
|
||||||
return terminal.getDeviceType();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 6、没有找到,还是返回 null
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -678,6 +678,15 @@ public class StpUtil {
|
|||||||
stpLogic.checkActiveTimeout();
|
stpLogic.checkActiveTimeout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前 token 的最后活跃时间(13位时间戳),如果不存在则返回 -2
|
||||||
|
*
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
public static long getTokenLastActiveTime() {
|
||||||
|
return stpLogic.getTokenLastActiveTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------- 过期时间相关 -------------------
|
// ------------------- 过期时间相关 -------------------
|
||||||
|
|
||||||
@ -1010,6 +1019,25 @@ public class StpUtil {
|
|||||||
stpLogic.forEachTerminalList(loginId, function);
|
stpLogic.forEachTerminalList(loginId, function);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回当前 token 指向的 SaTerminalInfo 设备信息,如果 token 无效则返回 null
|
||||||
|
*
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
public static SaTerminalInfo getTerminalInfo() {
|
||||||
|
return stpLogic.getTerminalInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回指定 token 指向的 SaTerminalInfo 设备信息,如果 Token 无效则返回 null
|
||||||
|
*
|
||||||
|
* @param tokenValue 指定 token
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
public static SaTerminalInfo getTerminalInfoByToken(String tokenValue) {
|
||||||
|
return stpLogic.getTerminalInfoByToken(tokenValue);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回当前会话的登录设备类型
|
* 返回当前会话的登录设备类型
|
||||||
*
|
*
|
||||||
@ -1030,12 +1058,22 @@ public class StpUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前 token 的最后活跃时间(13位时间戳),如果不存在则返回 -2
|
* 返回当前会话的登录设备 ID
|
||||||
*
|
*
|
||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
public static long getTokenLastActiveTime() {
|
public static String getLoginDeviceId() {
|
||||||
return stpLogic.getTokenLastActiveTime();
|
return stpLogic.getLoginDeviceId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回指定 token 会话的登录设备 ID
|
||||||
|
*
|
||||||
|
* @param tokenValue 指定token
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
public static String getLoginDeviceIdByToken(String tokenValue) {
|
||||||
|
return stpLogic.getLoginDeviceIdByToken(tokenValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user