v1.41.0 update

This commit is contained in:
click33
2025-03-21 14:22:00 +08:00
parent db611b8337
commit 5e8a429d37
67 changed files with 617 additions and 143 deletions

View File

@@ -2,17 +2,19 @@ package com.pj.satoken;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.fun.SaTwoParamFunction;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.SaTerminalInfo;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import cn.dev33.satoken.stp.parameter.SaLogoutParameter;
import java.util.List;
/**
* Sa-Token 权限认证工具类 (User 版)
* 【User账号体系】Sa-Token 权限认证工具类
*
* @author click33
* @since 1.0.0
@@ -223,7 +225,7 @@ public class StpUserUtil {
return stpLogic.getOrCreateLoginSession(id);
}
// --- 注销
// --- 注销 (根据 token)
/**
* 在当前客户端会话注销
@@ -232,6 +234,76 @@ public class StpUserUtil {
stpLogic.logout();
}
/**
* 在当前客户端会话注销,根据注销参数
*/
public static void logout(SaLogoutParameter logoutParameter) {
stpLogic.logout(logoutParameter);
}
/**
* 注销下线,根据指定 token
*
* @param tokenValue 指定 token
*/
public static void logoutByTokenValue(String tokenValue) {
stpLogic.logoutByTokenValue(tokenValue);
}
/**
* 注销下线,根据指定 token、注销参数
*
* @param tokenValue 指定 token
* @param logoutParameter /
*/
public static void logoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.logoutByTokenValue(tokenValue, logoutParameter);
}
/**
* 踢人下线,根据指定 token
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
*/
public static void kickoutByTokenValue(String tokenValue) {
stpLogic.kickoutByTokenValue(tokenValue);
}
/**
* 踢人下线,根据指定 token、注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
* @param logoutParameter 注销参数
*/
public static void kickoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.kickoutByTokenValue(tokenValue, logoutParameter);
}
/**
* 顶人下线,根据指定 token
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param tokenValue 指定 token
*/
public static void replacedByTokenValue(String tokenValue) {
stpLogic.replacedByTokenValue(tokenValue);
}
/**
* 顶人下线,根据指定 token、注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param tokenValue 指定 token
* @param logoutParameter /
*/
public static void replacedByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.replacedByTokenValue(tokenValue, logoutParameter);
}
// --- 注销 (根据 loginId)
/**
* 会话注销根据账号id
*
@@ -252,12 +324,13 @@ public class StpUserUtil {
}
/**
* 会话注销,根据指定 Token
* 会话注销,根据账号id 和 注销参数
*
* @param tokenValue 指定 token
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void logoutByTokenValue(String tokenValue) {
stpLogic.logoutByTokenValue(tokenValue);
public static void logout(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.logout(loginId, logoutParameter);
}
/**
@@ -282,13 +355,24 @@ public class StpUserUtil {
}
/**
* 踢人下线,根据指定 token
* 踢人下线,根据账号id 和 注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void kickoutByTokenValue(String tokenValue) {
stpLogic.kickoutByTokenValue(tokenValue);
public static void kickout(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.kickout(loginId, logoutParameter);
}
/**
* 顶人下线根据账号id
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param loginId 账号id
*/
public static void replaced(Object loginId) {
stpLogic.replaced(loginId);
}
/**
@@ -302,6 +386,47 @@ public class StpUserUtil {
stpLogic.replaced(loginId, deviceType);
}
/**
* 顶人下线根据账号id 和 注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void replaced(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.replaced(loginId, logoutParameter);
}
// --- 注销 (会话管理辅助方法)
/**
* 在 Account-Session 上移除 Terminal 信息 (注销下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByLogout(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByLogout(session, terminal);
}
/**
* 在 Account-Session 上移除 Terminal 信息 (踢人下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByKickout(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByKickout(session, terminal);
}
/**
* 在 Account-Session 上移除 Terminal 信息 (顶人下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByReplaced(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByReplaced(session, terminal);
}
// 会话查询
/**
@@ -386,7 +511,7 @@ public class StpUserUtil {
}
/**
* 获取指定 token 对应的账号id如果未登录,则返回 null
* 获取指定 token 对应的账号id如果 token 无效或 token 处于被踢、被顶、被冻结等状态,则返回 null
*
* @param tokenValue token
* @return 账号id
@@ -395,6 +520,16 @@ public class StpUserUtil {
return stpLogic.getLoginIdByToken(tokenValue);
}
/**
* 获取指定 token 对应的账号id如果 token 无效或 token 处于被踢、被顶等状态 (不考虑被冻结),则返回 null
*
* @param tokenValue token
* @return 账号id
*/
public Object getLoginIdByTokenNotThinkFreeze(String tokenValue) {
return stpLogic.getLoginIdByTokenNotThinkFreeze(tokenValue);
}
/**
* 获取当前 Token 的扩展信息此函数只在jwt模式下生效
*
@@ -823,7 +958,17 @@ public class StpUserUtil {
}
/**
* 获取指定账号 id 指定设备类型端的 SaTerminalInfo 集合
* 获取指定账号 id 已登录设备信息集合
*
* @param loginId 账号id
* @return 此 loginId 的所有登录 token
*/
public static List<SaTerminalInfo> getTerminalListByLoginId(Object loginId) {
return stpLogic.getTerminalListByLoginId(loginId);
}
/**
* 获取指定账号 id 指定设备类型端的已登录设备信息集合
*
* @param loginId 账号id
* @param deviceType 设备类型,填 null 代表不限设备类型
@@ -833,6 +978,16 @@ public class StpUserUtil {
return stpLogic.getTerminalListByLoginId(loginId, deviceType);
}
/**
* 获取指定账号 id 已登录设备信息集合,执行特定函数
*
* @param loginId 账号id
* @param function 需要执行的函数
*/
public static void forEachTerminalList(Object loginId, SaTwoParamFunction<SaSession, SaTerminalInfo> function) {
stpLogic.forEachTerminalList(loginId, function);
}
/**
* 返回当前会话的登录设备类型
*
@@ -861,6 +1016,15 @@ public class StpUserUtil {
return stpLogic.getTokenLastActiveTime();
}
/**
* 判断对于指定 loginId 来讲,指定设备 id 是否为可信任设备
* @param deviceId /
* @return /
*/
public static boolean isTrustDeviceId(Object userId, String deviceId) {
return stpLogic.isTrustDeviceId(userId, deviceId);
}
// ------------------- 会话管理 -------------------