mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-04-04 14:43:44 +08:00
v1.41.0 update
This commit is contained in:
parent
db611b8337
commit
5e8a429d37
@ -1,7 +1,7 @@
|
||||
<p align="center">
|
||||
<img alt="logo" src="https://sa-token.cc/logo.png" width="150" height="150">
|
||||
</p>
|
||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Sa-Token v1.40.0</h1>
|
||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Sa-Token v1.41.0</h1>
|
||||
<h4 align="center">一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!</h4>
|
||||
<p align="center">
|
||||
<a href="https://gitee.com/dromara/sa-token/stargazers"><img src="https://gitee.com/dromara/sa-token/badge/star.svg?theme=gvp"></a>
|
||||
@ -30,7 +30,7 @@ Sa-Token 是一个轻量级 Java 权限认证框架,目前拥有五大核心
|
||||
<dependency>
|
||||
<groupId>cn.dev33</groupId>
|
||||
<artifactId>sa-token-spring-boot-starter</artifactId>
|
||||
<version>1.40.0</version>
|
||||
<version>1.41.0</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
2
pom.xml
2
pom.xml
@ -37,7 +37,7 @@
|
||||
|
||||
<!-- 一些属性 -->
|
||||
<properties>
|
||||
<revision>1.40.0</revision>
|
||||
<revision>1.41.0</revision>
|
||||
<jdk.version>1.8</jdk.version>
|
||||
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
|
||||
|
@ -13,7 +13,7 @@
|
||||
<url>https://github.com/dromara/sa-token</url>
|
||||
|
||||
<properties>
|
||||
<revision>1.40.0</revision>
|
||||
<revision>1.41.0</revision>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
@ -72,12 +72,12 @@ public class SaTokenPluginHolder {
|
||||
* </p>
|
||||
*/
|
||||
public synchronized void loaderPlugins() {
|
||||
SaManager.getLog().info("SPI 插件加载开始 ...");
|
||||
SaManager.getLog().info("SPI plugin loading start ...");
|
||||
List<SaTokenPlugin> plugins = _loaderPluginsBySpi(SaTokenPlugin.class, spiDir);
|
||||
for (SaTokenPlugin plugin : plugins) {
|
||||
installPlugin(plugin);
|
||||
}
|
||||
SaManager.getLog().info("SPI 插件加载结束 ...");
|
||||
SaManager.getLog().info("SPI plugin loading end ...");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -112,7 +112,7 @@ public class SaTokenPluginHolder {
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("SPI 插件加载失败: " + e.getMessage(), e);
|
||||
throw new SaTokenPluginException("SPI 插件加载失败: " + e.getMessage(), e);
|
||||
}
|
||||
return providers;
|
||||
}
|
||||
|
@ -525,7 +525,7 @@ public class StpLogic {
|
||||
// 如果配置为:不允许一个账号多地同时登录,则需要先将这个账号的历史登录会话标记为:被顶下线
|
||||
if( ! loginParameter.getIsConcurrent()) {
|
||||
if(loginParameter.getReplacedRange() == SaReplacedRange.CURR_DEVICE_TYPE) {
|
||||
replaced(id, loginParameter.getDeviceTypeOrDefault());
|
||||
replaced(id, loginParameter.getDeviceType());
|
||||
}
|
||||
if(loginParameter.getReplacedRange() == SaReplacedRange.ALL_DEVICE_TYPE) {
|
||||
replaced(id, createSaLogoutParameter());
|
||||
|
@ -231,16 +231,6 @@ public class SaLoginParameter {
|
||||
return (int)_timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 获取device参数,如果为null,则返回默认值
|
||||
*/
|
||||
public String getDeviceTypeOrDefault() {
|
||||
if(deviceType == null) {
|
||||
return SaTokenConsts.DEFAULT_LOGIN_DEVICE_TYPE;
|
||||
}
|
||||
return deviceType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 静态方法获取一个 SaLoginParameter 对象
|
||||
* @return SaLoginParameter 对象
|
||||
|
@ -36,7 +36,7 @@ public class SaTokenConsts {
|
||||
/**
|
||||
* Sa-Token 当前版本号
|
||||
*/
|
||||
public static final String VERSION_NO = "v1.40.0";
|
||||
public static final String VERSION_NO = "v1.41.0";
|
||||
|
||||
/**
|
||||
* Sa-Token 开源地址 Gitee
|
||||
|
@ -42,10 +42,10 @@
|
||||
<module>sa-token-demo-sso/sa-token-demo-sso3-client</module>
|
||||
<module>sa-token-demo-sso/sa-token-demo-sso3-client-test2</module>
|
||||
<module>sa-token-demo-sso/sa-token-demo-sso3-client-nosdk</module>
|
||||
<!-- <module>sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon</module>-->
|
||||
<!-- <module>sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon</module>-->
|
||||
<!-- <module>sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon</module>-->
|
||||
<!-- <module>sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon</module>-->
|
||||
<module>sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon</module>
|
||||
<module>sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon</module>
|
||||
<module>sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon</module>
|
||||
<module>sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon</module>
|
||||
<module>sa-token-demo-test</module>
|
||||
<module>sa-token-demo-thymeleaf</module>
|
||||
<module>sa-token-demo-webflux</module>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@ -73,7 +73,7 @@
|
||||
<dependency>
|
||||
<groupId>cn.dev33</groupId>
|
||||
<artifactId>sa-token-bom</artifactId>
|
||||
<version>1.40.0</version>
|
||||
<version>1.41.0</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ------------------- 会话管理 -------------------
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
<java.run.main.class>com.pj.SaTokenDeviceLockApplication</java.run.main.class>
|
||||
</properties>
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
<dubbo.version>2.7.21</dubbo.version>
|
||||
<nacos.version>1.4.2</nacos.version>
|
||||
</properties>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
<dubbo.version>2.7.21</dubbo.version>
|
||||
<nacos.version>1.4.2</nacos.version>
|
||||
</properties>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
<dubbo.version>3.2.2</dubbo.version>
|
||||
<nacos.version>2.2.2</nacos.version>
|
||||
</properties>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
<dubbo.version>3.2.2</dubbo.version>
|
||||
<nacos.version>2.2.2</nacos.version>
|
||||
</properties>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -27,7 +27,7 @@
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<lombok.version>1.18.10</lombok.version>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -1,13 +1,12 @@
|
||||
package com.pj.satoken;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
import cn.dev33.satoken.interceptor.SaInterceptor;
|
||||
import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
|
||||
import cn.dev33.satoken.stp.StpLogic;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
|
||||
/**
|
||||
@ -32,7 +31,9 @@ public class SaTokenConfigure implements WebMvcConfigurer {
|
||||
*/
|
||||
@Bean
|
||||
public StpLogic getStpLogicJwt() {
|
||||
return new StpLogicJwtForSimple();
|
||||
return new StpLogicJwtForSimple();
|
||||
// return new StpLogicJwtForMixin();
|
||||
// return new StpLogicJwtForStateless();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.pj.test;
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.stp.SaTokenInfo;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.pj.util.AjaxJson;
|
||||
@ -29,15 +30,15 @@ public class TestJwtController {
|
||||
System.out.println("当前是否登录:" + StpUtil.isLogin());
|
||||
System.out.println("当前登录账号:" + StpUtil.getLoginIdDefaultNull());
|
||||
|
||||
StpUtil.login(id); // 在当前会话登录此账号
|
||||
StpUtil.login(id, new SaLoginParameter().setExtra("name", "张三")); // 在当前会话登录此账号
|
||||
System.out.println("登录成功");
|
||||
System.out.println("当前是否登录:" + StpUtil.isLogin());
|
||||
System.out.println("当前登录账号:" + StpUtil.getLoginId());
|
||||
// System.out.println("当前登录账号并转为int:" + StpUtil.getLoginIdAsInt());
|
||||
System.out.println("当前登录设备:" + StpUtil.getLoginDevice());
|
||||
System.out.println("当前登录设备:" + StpUtil.getLoginDeviceType());
|
||||
// System.out.println("当前token信息:" + StpUtil.getTokenInfo());
|
||||
|
||||
return AjaxJson.getSuccess();
|
||||
return AjaxJson.getSuccess().setData(StpUtil.getTokenValue());
|
||||
}
|
||||
|
||||
// 打印当前token信息, 浏览器访问: http://localhost:8081/test/tokenInfo
|
||||
|
@ -17,7 +17,7 @@
|
||||
<java.version>1.8</java.version>
|
||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<java.version>1.8</java.version>
|
||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
</properties>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<java.version>17</java.version>
|
||||
<maven.compiler.source>17</maven.compiler.source>
|
||||
<maven.compiler.traget>17</maven.compiler.traget>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
</properties>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -27,7 +27,7 @@
|
||||
<!--<spring.version>4.2.5.RELEASE</spring.version>-->
|
||||
<spring.version>5.3.7</spring.version>
|
||||
<jackson.version>2.16.1</jackson.version>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.pj.sso;
|
||||
|
||||
import cn.dev33.satoken.dao.SaTokenDao;
|
||||
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
|
||||
import cn.dev33.satoken.dao.SaTokenDaoForRedisx;
|
||||
import cn.dev33.satoken.sso.config.SaSsoServerConfig;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.dev33.satoken.util.SaResult;
|
||||
@ -21,7 +21,7 @@ public class SsoConfig {
|
||||
* 构建建 SaToken redis dao(如果不需要 redis;可以注释掉)
|
||||
* */
|
||||
@Bean
|
||||
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
|
||||
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoForRedisx saTokenDao) {
|
||||
return saTokenDao;
|
||||
}
|
||||
|
||||
|
@ -16,15 +16,20 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- Solon 依赖 -->
|
||||
<dependency>
|
||||
<!--<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-api</artifactId>
|
||||
</dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-web</artifactId>
|
||||
<version>${solon.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Sa-Token 权限认证, 在线文档:https://sa-token.cc/ -->
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.pj;
|
||||
|
||||
import cn.dev33.satoken.dao.SaTokenDao;
|
||||
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
|
||||
import cn.dev33.satoken.dao.SaTokenDaoForRedisx;
|
||||
import org.noear.solon.annotation.Bean;
|
||||
import org.noear.solon.annotation.Configuration;
|
||||
import org.noear.solon.annotation.Inject;
|
||||
@ -16,7 +16,7 @@ public class SaConfig {
|
||||
* 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
|
||||
* */
|
||||
@Bean
|
||||
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
|
||||
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoForRedisx saTokenDao) {
|
||||
return saTokenDao;
|
||||
}
|
||||
}
|
||||
|
@ -16,15 +16,20 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- Solon 依赖 -->
|
||||
<dependency>
|
||||
<!--<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-api</artifactId>
|
||||
</dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-web</artifactId>
|
||||
<version>${solon.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Sa-Token 权限认证, 在线文档:https://sa-token.cc/ -->
|
||||
|
@ -1,12 +1,11 @@
|
||||
package com.pj;
|
||||
|
||||
import cn.dev33.satoken.dao.SaTokenDao;
|
||||
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
|
||||
import cn.dev33.satoken.dao.SaTokenDaoForRedisx;
|
||||
import cn.dev33.satoken.sso.config.SaSsoClientConfig;
|
||||
import com.dtflys.forest.Forest;
|
||||
import org.noear.solon.annotation.Bean;
|
||||
import org.noear.solon.annotation.Configuration;
|
||||
import org.noear.solon.annotation.Init;
|
||||
import org.noear.solon.annotation.Inject;
|
||||
|
||||
/**
|
||||
@ -19,7 +18,7 @@ public class SaConfig {
|
||||
* 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
|
||||
* */
|
||||
@Bean
|
||||
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
|
||||
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoForRedisx saTokenDao) {
|
||||
return saTokenDao;
|
||||
}
|
||||
|
||||
|
@ -16,15 +16,20 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- Solon 依赖 -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.noear</groupId>-->
|
||||
<!-- <artifactId>solon-api</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-api</artifactId>
|
||||
<artifactId>solon-web</artifactId>
|
||||
<version>${solon.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Http 请求工具 -->
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.pj;
|
||||
|
||||
import cn.dev33.satoken.dao.SaTokenDao;
|
||||
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
|
||||
import cn.dev33.satoken.dao.SaTokenDaoForRedisx;
|
||||
import org.noear.solon.annotation.Bean;
|
||||
import org.noear.solon.annotation.Configuration;
|
||||
import org.noear.solon.annotation.Inject;
|
||||
@ -16,7 +16,7 @@ public class SaConfig {
|
||||
* 构建建 SaToken redis dao(如果不需要 redis;可以注释掉)
|
||||
* */
|
||||
@Bean
|
||||
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
|
||||
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoForRedisx saTokenDao) {
|
||||
return saTokenDao;
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
<java.run.main.class>com.pj.SaTokenApplication</java.run.main.class>
|
||||
</properties>
|
||||
|
||||
|
@ -2,16 +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.stp.parameter.SaLoginParameter;
|
||||
import cn.dev33.satoken.session.SaTerminalInfo;
|
||||
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
|
||||
@ -155,10 +158,10 @@ public class StpUserUtil {
|
||||
* 会话登录,并指定登录设备类型
|
||||
*
|
||||
* @param id 账号id,建议的类型:(long | int | String)
|
||||
* @param device 设备类型
|
||||
* @param deviceType 设备类型
|
||||
*/
|
||||
public static void login(Object id, String device) {
|
||||
stpLogic.login(id, device);
|
||||
public static void login(Object id, String deviceType) {
|
||||
stpLogic.login(id, deviceType);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -222,7 +225,7 @@ public class StpUserUtil {
|
||||
return stpLogic.getOrCreateLoginSession(id);
|
||||
}
|
||||
|
||||
// --- 注销
|
||||
// --- 注销 (根据 token)
|
||||
|
||||
/**
|
||||
* 在当前客户端会话注销
|
||||
@ -231,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
|
||||
*
|
||||
@ -244,19 +317,20 @@ public class StpUserUtil {
|
||||
* 会话注销,根据账号id 和 设备类型
|
||||
*
|
||||
* @param loginId 账号id
|
||||
* @param device 设备类型 (填 null 代表注销该账号的所有设备类型)
|
||||
* @param deviceType 设备类型 (填 null 代表注销该账号的所有设备类型)
|
||||
*/
|
||||
public static void logout(Object loginId, String device) {
|
||||
stpLogic.logout(loginId, device);
|
||||
public static void logout(Object loginId, String deviceType) {
|
||||
stpLogic.logout(loginId, deviceType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 会话注销,根据指定 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);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -274,20 +348,31 @@ public class StpUserUtil {
|
||||
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
|
||||
*
|
||||
* @param loginId 账号id
|
||||
* @param device 设备类型 (填 null 代表踢出该账号的所有设备类型)
|
||||
* @param deviceType 设备类型 (填 null 代表踢出该账号的所有设备类型)
|
||||
*/
|
||||
public static void kickout(Object loginId, String device) {
|
||||
stpLogic.kickout(loginId, device);
|
||||
public static void kickout(Object loginId, String deviceType) {
|
||||
stpLogic.kickout(loginId, deviceType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 踢人下线,根据指定 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);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -295,12 +380,53 @@ public class StpUserUtil {
|
||||
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
|
||||
*
|
||||
* @param loginId 账号id
|
||||
* @param device 设备类型 (填 null 代表顶替该账号的所有设备类型)
|
||||
* @param deviceType 设备类型 (填 null 代表顶替该账号的所有设备类型)
|
||||
*/
|
||||
public static void replaced(Object loginId, String device) {
|
||||
stpLogic.replaced(loginId, device);
|
||||
public static void replaced(Object loginId, String deviceType) {
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
// 会话查询
|
||||
|
||||
/**
|
||||
@ -312,6 +438,15 @@ public class StpUserUtil {
|
||||
return stpLogic.isLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断指定账号是否已经登录
|
||||
*
|
||||
* @return 已登录返回 true,未登录返回 false
|
||||
*/
|
||||
public static boolean isLogin(Object loginId) {
|
||||
return stpLogic.isLogin(loginId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检验当前会话是否已经登录,如未登录,则抛出异常
|
||||
*/
|
||||
@ -376,7 +511,7 @@ public class StpUserUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定 token 对应的账号id,如果未登录,则返回 null
|
||||
* 获取指定 token 对应的账号id,如果 token 无效或 token 处于被踢、被顶、被冻结等状态,则返回 null
|
||||
*
|
||||
* @param tokenValue token
|
||||
* @return 账号id
|
||||
@ -385,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模式下生效)
|
||||
*
|
||||
@ -784,11 +929,11 @@ public class StpUserUtil {
|
||||
* </p>
|
||||
*
|
||||
* @param loginId 账号id
|
||||
* @param device 设备类型,填 null 代表不限设备类型
|
||||
* @param deviceType 设备类型,填 null 代表不限设备类型
|
||||
* @return token值
|
||||
*/
|
||||
public static String getTokenValueByLoginId(Object loginId, String device) {
|
||||
return stpLogic.getTokenValueByLoginId(loginId, device);
|
||||
public static String getTokenValueByLoginId(Object loginId, String deviceType) {
|
||||
return stpLogic.getTokenValueByLoginId(loginId, deviceType);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -805,11 +950,42 @@ public class StpUserUtil {
|
||||
* 获取指定账号 id 指定设备类型端的 token 集合
|
||||
*
|
||||
* @param loginId 账号id
|
||||
* @param device 设备类型,填 null 代表不限设备类型
|
||||
* @param deviceType 设备类型,填 null 代表不限设备类型
|
||||
* @return 此 loginId 的所有登录 token
|
||||
*/
|
||||
public static List<String> getTokenValueListByLoginId(Object loginId, String device) {
|
||||
return stpLogic.getTokenValueListByLoginId(loginId, device);
|
||||
public static List<String> getTokenValueListByLoginId(Object loginId, String deviceType) {
|
||||
return stpLogic.getTokenValueListByLoginId(loginId, deviceType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定账号 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 代表不限设备类型
|
||||
* @return /
|
||||
*/
|
||||
public static List<SaTerminalInfo> getTerminalListByLoginId(Object loginId, String deviceType) {
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -817,10 +993,39 @@ public class StpUserUtil {
|
||||
*
|
||||
* @return 当前令牌的登录设备类型
|
||||
*/
|
||||
public static String getLoginDevice() {
|
||||
public static String getLoginDeviceType() {
|
||||
return stpLogic.getLoginDeviceType();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回指定 token 会话的登录设备类型
|
||||
*
|
||||
* @param tokenValue 指定token
|
||||
* @return 当前令牌的登录设备类型
|
||||
*/
|
||||
public static String getLoginDeviceTypeByToken(String tokenValue) {
|
||||
return stpLogic.getLoginDeviceTypeByToken(tokenValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前 token 的最后活跃时间(13位时间戳),如果不存在则返回 -2
|
||||
*
|
||||
* @return /
|
||||
*/
|
||||
public static long getTokenLastActiveTime() {
|
||||
return stpLogic.getTokenLastActiveTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断对于指定 loginId 来讲,指定设备 id 是否为可信任设备
|
||||
* @param deviceId /
|
||||
* @return /
|
||||
*/
|
||||
public static boolean isTrustDeviceId(Object userId, String deviceId) {
|
||||
return stpLogic.isTrustDeviceId(userId, deviceId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ------------------- 会话管理 -------------------
|
||||
|
||||
@ -1201,10 +1406,48 @@ public class StpUserUtil {
|
||||
/**
|
||||
* 在当前会话 结束指定业务标识的二级认证
|
||||
*
|
||||
* @param service 业务标识
|
||||
* @param service 业务标识
|
||||
*/
|
||||
public static void closeSafe(String service) {
|
||||
stpLogic.closeSafe(service);
|
||||
}
|
||||
|
||||
|
||||
// ------------------- Bean 对象、字段代理 -------------------
|
||||
|
||||
/**
|
||||
* 根据当前配置对象创建一个 SaLoginParameter 对象
|
||||
*
|
||||
* @return /
|
||||
*/
|
||||
public static SaLoginParameter createSaLoginParameter() {
|
||||
return stpLogic.createSaLoginParameter();
|
||||
}
|
||||
|
||||
|
||||
// ------------------- 过期方法 -------------------
|
||||
|
||||
/**
|
||||
* <h2>请更换为 getLoginDeviceType </h2>
|
||||
* 返回当前会话的登录设备类型
|
||||
*
|
||||
* @return 当前令牌的登录设备类型
|
||||
*/
|
||||
@Deprecated
|
||||
public static String getLoginDevice() {
|
||||
return stpLogic.getLoginDevice();
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>请更换为 getLoginDeviceTypeByToken </h2>
|
||||
* 返回指定 token 会话的登录设备类型
|
||||
*
|
||||
* @param tokenValue 指定token
|
||||
* @return 当前令牌的登录设备类型
|
||||
*/
|
||||
@Deprecated
|
||||
public static String getLoginDeviceByToken(String tokenValue) {
|
||||
return stpLogic.getLoginDeviceByToken(tokenValue);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ public class TestController {
|
||||
StpUtil.login(id, new SaLoginParameter()
|
||||
.setIsConcurrent(true)
|
||||
.setIsShare(false)
|
||||
.setDeviceType(dt)
|
||||
// .setDeviceType(dt)
|
||||
.setMaxLoginCount(4)
|
||||
.setMaxTryTimes(12)
|
||||
.setTerminalExtra("deviceSimpleTitle", "XiaoMi 15 Ultra")
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@ -47,7 +47,7 @@
|
||||
<!-- 在 thymeleaf 标签中使用 Sa-Token -->
|
||||
<dependency>
|
||||
<groupId>cn.dev33</groupId>
|
||||
<artifactId>sa-token-dialect-thymeleaf</artifactId>
|
||||
<artifactId>sa-token-thymeleaf</artifactId>
|
||||
<version>${sa-token.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 定义 Sa-Token 版本号 -->
|
||||
<properties>
|
||||
<sa-token.version>1.40.0</sa-token.version>
|
||||
<sa-token.version>1.41.0</sa-token.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -12,7 +12,7 @@
|
||||
<description>Sa-Token Dependencies</description>
|
||||
|
||||
<properties>
|
||||
<revision>1.40.0</revision>
|
||||
<revision>1.41.0</revision>
|
||||
|
||||
<!-- 统一定义依赖版本号 -->
|
||||
<springboot.version>2.7.18</springboot.version>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<p align="center">
|
||||
<img alt="logo" src="https://sa-token.cc/logo.png" width="150" height="150">
|
||||
</p>
|
||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Sa-Token v1.40.0</h1>
|
||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Sa-Token v1.41.0</h1>
|
||||
<h5 align="center">一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!</h5>
|
||||
<p align="center" class="badge-box">
|
||||
<a href="https://gitee.com/dromara/sa-token/stargazers"><img src="https://gitee.com/dromara/sa-token/badge/star.svg?theme=gvp"></a>
|
||||
|
@ -18,7 +18,7 @@
|
||||
<div class="logo-box">
|
||||
<img src="logo.png" title="logo" />
|
||||
<h1 class="logo-text">Sa-Token</h1>
|
||||
<sub>v1.40.0</sub>
|
||||
<sub>v1.41.0</sub>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@ -28,6 +28,7 @@
|
||||
</div>
|
||||
<select class="select-version p-none" onchange="location.href=this.value">
|
||||
<option value="doc.html">最新版</option>
|
||||
<option value="v/v1.40.0/doc.html">v1.40.0</option>
|
||||
<option value="v/v1.39.0/doc.html">v1.39.0</option>
|
||||
<option value="v/v1.38.0/doc.html">v1.38.0</option>
|
||||
<option value="v/v1.37.0/doc.html">v1.37.0</option>
|
||||
@ -232,7 +233,7 @@
|
||||
<script src="./static/is-star-plugin.js?v=7"></script>
|
||||
<script src="./static/is-fill-in-wj-plugin.js?v=7"></script>
|
||||
<script>
|
||||
var saTokenTopVersion = '1.40.0'; // Sa-Token最新版本
|
||||
var saTokenTopVersion = '1.41.0'; // Sa-Token最新版本
|
||||
var name = '<img style="width: 60px; height: 60px; vertical-align: middle;" src="logo.png" alt="logo" /> ';
|
||||
name += '<b style="font-size: 28px; vertical-align: middle;">Sa-Token</b> <sub>v' + saTokenTopVersion + '</sub>';
|
||||
window.$docsify = {
|
||||
|
@ -122,7 +122,7 @@
|
||||
<div class="main-box">
|
||||
<div class="content-box">
|
||||
<!-- <div class="fenge"></div> -->
|
||||
<h1>Sa-Token<small>v1.40.0</small></h1>
|
||||
<h1>Sa-Token<small>v1.41.0</small></h1>
|
||||
<div class="sub-title">
|
||||
<span class="sub-title-nr">一个轻量级 java 权限认证框架,让鉴权变得简单、优雅!</span>
|
||||
<div class="gb-cursor"> </div>
|
||||
|
@ -1,6 +1,66 @@
|
||||
# 更新日志
|
||||
|
||||
|
||||
### v1.41.0 @2025-3-21
|
||||
- core:
|
||||
- 修复:修复 `StpUtil.setTokenValue("xxx")`、`loginParameter.getIsWriteHeader()` 空指针的问题。 fix: [#IBKSM0](https://gitee.com/dromara/sa-token/issues/IBKSM0)
|
||||
- 修复:将 `SaDisableWrapperInfo.createNotDisabled()` 默认返回值封禁等级改为 -2,以保证向之前版本兼容。
|
||||
- 新增:新增基于 SPI 的插件体系。 **[重要]**
|
||||
- 重构:JSON 转换器模块。 **[重要]**
|
||||
- 新增:新增 serializer 序列化模块,控制 `Object` 与 `String` 的序列化方式。 **[重要]**
|
||||
- 重构:重构防火墙模块,增加 hooks 机制。 **[重要]**
|
||||
- 新增:防火墙新增:请求 path 禁止字符校验、Host 检测、请求 Method 检测、请求头检测、请求参数检测。重构目录遍历符检测算法。
|
||||
- 重构:重构 `SaTokenDao` 模块,将序列化与存储操作分离。 **[重要]**
|
||||
- 重构:重构 `SaTokenDao` 默认实现类,优化底层设计。
|
||||
- 新增:`isLastingCookie` 配置项支持在全局配置中定义了。
|
||||
- 重构:`SaLoginModel` -> `SaLoginParameter`。 **[不向下兼容]**
|
||||
- 重构:`TokenSign` -> `SaTerminalInfo`。 **[不向下兼容]**
|
||||
- 新增:`SaTerminalInfo` 新增 `extraData` 自定义扩展数据设置。
|
||||
- 新增:`SaLoginParameter` 支持配置 `isConcurrent`、`isShare`、`maxLoginCount`、`maxTryTimes`。
|
||||
- 新增:新增 `SaLogoutParameter`,用于控制注销会话时的各种细节。 **[重要]**
|
||||
- 新增:新增 `StpLogic#isTrustDeviceId` 方法,用于判断指定设备是否为可信任设备。
|
||||
- 新增:新增 `StpUtil.getTerminalListByLoginId(loginId)`、`StpUtil.forEachTerminalList(loginId)` 方法,以更方便的实现单账号会话管理。
|
||||
- 升级:API 参数签名配置支持自定义摘要算法。
|
||||
- 新增:新增 `@SaCheckSign` 注解鉴权,用于 API 签名参数校验。
|
||||
- 新增:API 参数签名模块新增多应用模式。 fix: [#IAK2BI](https://gitee.com/dromara/sa-token/issues/IAK2BI), [#I9SPI1](https://gitee.com/dromara/sa-token/issues/I9SPI1), [#IAC0P9](https://gitee.com/dromara/sa-token/issues/IAC0P9) **[重要]**
|
||||
- 重构:全局配置 `is-share` 默认值改为 false。 **[不向下兼容]**
|
||||
- 重构:踢人下线、顶人下线默认将删除对应的 token-session 对象。
|
||||
- 优化:优化注销会话相关 API。
|
||||
- 重构:登录默认设备类型值改为 DEF。 **[不向下兼容]**
|
||||
- 重构:`BCrypt` 标注为 `@Deprecated`。
|
||||
- 新增:`sa-token-quick-login` 支持 `SpringBoot3` 项目。 fix: [#IAFQNE](https://gitee.com/dromara/sa-token/issues/IAFQNE)、[#673](https://github.com/dromara/Sa-Token/issues/673)
|
||||
- 新增:`SaTokenConfig` 新增 `replacedRange`、`overflowLogoutMode`、`logoutRange`、`isLogoutKeepFreezeOps`、``isLogoutKeepTokenSession`` 配置项。
|
||||
- OAuth2:
|
||||
- 重构:重构 sa-token-oauth2 插件,使注解鉴权处理器的注册过程改为 SPI 插件加载。
|
||||
- 插件:
|
||||
- 新增:`sa-token-serializer-features` 插件,用于实现各种形式的自定义字符集序列化方案。
|
||||
- 新增:`sa-token-fastjson` 插件。
|
||||
- 新增:`sa-token-fastjson2` 插件。
|
||||
- 新增:`sa-token-snack3` 插件。
|
||||
- 新增:`sa-token-caffeine` 插件。
|
||||
- 单元测试:
|
||||
- 新增:`sa-token-json-test` json 模块单元测试。
|
||||
- 新增:`sa-token-serializer-test` 序列化模块单元测试。
|
||||
- 文档:
|
||||
- 新增:QA “多个项目共用同一个 redis,怎么防止冲突?”
|
||||
- 优化:补全 OAuth2 模块遗漏的相关配置项。
|
||||
- 优化:优化 OAuth2 简述章节描述文档。
|
||||
- 优化:完善 “SSO 用户数据同步 / 迁移” 章节文档。
|
||||
- 修正:补全项目目录结构介绍文档。
|
||||
- 新增:文档新增 “登录参数 & 注销参数” 章节。
|
||||
- 优化:优化“技术求助”按钮的提示文字。
|
||||
- 新增:新增 `preview-doc.bat` 文件,一键启动文档预览。
|
||||
- 完善:完善 Redis 集成文档。
|
||||
- 新增:新增单账号会话查询的操作示例。
|
||||
- 新增:新增顶人下线 API 介绍。
|
||||
- 新增:新增 自定义序列化插件 章节。
|
||||
- 其它:
|
||||
- 新增:新增 `sa-token-demo/pom.xml` 以便在 idea 中一键导入所有 demo 项目。
|
||||
- 删除:删除不必要的 `.gitignore` 文件
|
||||
- 重构:重构 `sa-token-solon-plugin` 插件。
|
||||
- 新增:新增设备锁登录示例。
|
||||
|
||||
|
||||
### v1.40.0 @2025-2-1
|
||||
更新导读:[视频](https://www.bilibili.com/video/BV1uNATeeEvg/)、[文字版](https://juejin.cn/post/7467969744307306505)
|
||||
|
||||
|
@ -5,14 +5,14 @@
|
||||
---
|
||||
|
||||
### 正式版本
|
||||
v1.40.0 正式版,可上生产:
|
||||
v1.41.0 正式版,可上生产:
|
||||
|
||||
``` xml
|
||||
<!-- Sa-Token 权限认证 -->
|
||||
<dependency>
|
||||
<groupId>cn.dev33</groupId>
|
||||
<artifactId>sa-token-spring-boot-starter</artifactId>
|
||||
<version>1.40.0</version>
|
||||
<version>1.41.0</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
@ -83,7 +83,7 @@ public class TokenInfoTest {
|
||||
.create()
|
||||
.setTimeout(-1);
|
||||
Assertions.assertEquals(loginParameter.getCookieTimeout(), Integer.MAX_VALUE);
|
||||
Assertions.assertEquals(loginParameter.getDeviceTypeOrDefault(), SaTokenConsts.DEFAULT_LOGIN_DEVICE_TYPE);
|
||||
Assertions.assertEquals(loginParameter.getDeviceType(), SaTokenConsts.DEFAULT_LOGIN_DEVICE_TYPE);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -755,7 +755,7 @@ public class BasicsTest {
|
||||
Assertions.assertEquals(map2.get("name"), "zhangsan");
|
||||
|
||||
// 抛异常
|
||||
Assertions.assertThrows(SaJsonConvertException.class, () -> saJsonTemplate.jsonToMap(""));
|
||||
Assertions.assertThrows(SaJsonConvertException.class, () -> saJsonTemplate.jsonToMap("x"));
|
||||
}
|
||||
|
||||
// 测试过滤器、拦截器 基础API
|
||||
|
Loading…
Reference in New Issue
Block a user