From 5e8a429d37f35b15a2d784c8b46d39a706084504 Mon Sep 17 00:00:00 2001
From: click33 <2393584716@qq.com>
Date: Fri, 21 Mar 2025 14:22:00 +0800
Subject: [PATCH] v1.41.0 update
---
README.md | 4 +-
pom.xml | 2 +-
sa-token-bom/pom.xml | 2 +-
.../satoken/plugin/SaTokenPluginHolder.java | 6 +-
.../java/cn/dev33/satoken/stp/StpLogic.java | 2 +-
.../stp/parameter/SaLoginParameter.java | 10 -
.../cn/dev33/satoken/util/SaTokenConsts.java | 2 +-
sa-token-demo/pom.xml | 8 +-
.../sa-token-demo-alone-redis-cluster/pom.xml | 2 +-
.../sa-token-demo-alone-redis/pom.xml | 2 +-
sa-token-demo/sa-token-demo-beetl/pom.xml | 2 +-
.../sa-token-demo-bom-import/pom.xml | 4 +-
sa-token-demo/sa-token-demo-caffeine/pom.xml | 2 +-
sa-token-demo/sa-token-demo-case/pom.xml | 2 +-
.../main/java/com/pj/satoken/StpUserUtil.java | 190 ++++++++++-
.../sa-token-demo-device-lock/pom.xml | 2 +-
.../sa-token-demo-dubbo-consumer/pom.xml | 2 +-
.../sa-token-demo-dubbo-provider/pom.xml | 2 +-
.../sa-token-demo-dubbo3-consumer/pom.xml | 2 +-
.../sa-token-demo-dubbo3-provider/pom.xml | 2 +-
.../sa-token-demo-freemarker/pom.xml | 2 +-
sa-token-demo/sa-token-demo-grpc/pom.xml | 2 +-
.../sa-token-demo-hutool-timed-cache/pom.xml | 2 +-
sa-token-demo/sa-token-demo-jwt/pom.xml | 2 +-
.../java/com/pj/satoken/SaTokenConfigure.java | 13 +-
.../java/com/pj/test/TestJwtController.java | 7 +-
.../sa-token-demo-oauth2-client/pom.xml | 2 +-
.../sa-token-demo-oauth2-server/pom.xml | 2 +-
.../sa-token-demo-quick-login-sb3/pom.xml | 2 +-
.../sa-token-demo-quick-login/pom.xml | 2 +-
.../sa-token-demo-remember-me-server/pom.xml | 2 +-
.../sa-token-demo-solon-redisson/pom.xml | 2 +-
sa-token-demo/sa-token-demo-solon/pom.xml | 2 +-
.../sa-token-demo-springboot-redis/pom.xml | 2 +-
.../sa-token-demo-springboot-redisson/pom.xml | 2 +-
.../sa-token-demo-springboot/pom.xml | 2 +-
.../sa-token-demo-springboot3-redis/pom.xml | 2 +-
sa-token-demo/sa-token-demo-ssm/pom.xml | 2 +-
.../sa-token-demo-sso-server-solon/pom.xml | 2 +-
.../src/main/java/com/pj/sso/SsoConfig.java | 4 +-
.../sa-token-demo-sso1-client-solon/pom.xml | 9 +-
.../src/main/java/com/pj/SaConfig.java | 4 +-
.../sa-token-demo-sso2-client-solon/pom.xml | 9 +-
.../src/main/java/com/pj/SaConfig.java | 5 +-
.../sa-token-demo-sso3-client-solon/pom.xml | 9 +-
.../src/main/java/com/pj/SaConfig.java | 4 +-
.../sa-token-demo-sso-server/pom.xml | 2 +-
.../sa-token-demo-sso1-client/pom.xml | 2 +-
.../sa-token-demo-sso2-client/pom.xml | 2 +-
.../sa-token-demo-sso3-client-test2/pom.xml | 2 +-
.../sa-token-demo-sso3-client/pom.xml | 2 +-
sa-token-demo/sa-token-demo-test/pom.xml | 2 +-
.../main/java/com/pj/satoken/StpUserUtil.java | 307 ++++++++++++++++--
.../main/java/com/pj/test/TestController.java | 2 +-
sa-token-demo/sa-token-demo-thymeleaf/pom.xml | 4 +-
.../sa-token-demo-webflux-springboot3/pom.xml | 2 +-
sa-token-demo/sa-token-demo-webflux/pom.xml | 2 +-
.../sa-token-demo-websocket-spring/pom.xml | 2 +-
sa-token-demo/sa-token-demo-websocket/pom.xml | 2 +-
sa-token-dependencies/pom.xml | 2 +-
sa-token-doc/README.md | 2 +-
sa-token-doc/doc.html | 5 +-
sa-token-doc/index.html | 2 +-
sa-token-doc/more/update-log.md | 60 ++++
sa-token-doc/start/new-version.md | 4 +-
.../dev33/satoken/core/stp/TokenInfoTest.java | 2 +-
.../dev33/satoken/springboot/BasicsTest.java | 2 +-
67 files changed, 617 insertions(+), 143 deletions(-)
diff --git a/README.md b/README.md
index 8f4b96d1..c2595d7b 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
-Sa-Token v1.40.0
+Sa-Token v1.41.0
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!
@@ -30,7 +30,7 @@ Sa-Token 是一个轻量级 Java 权限认证框架,目前拥有五大核心
cn.dev33
sa-token-spring-boot-starter
- 1.40.0
+ 1.41.0
```
diff --git a/pom.xml b/pom.xml
index dbe043be..899d6b14 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
- 1.40.0
+ 1.41.0
1.8
utf-8
utf-8
diff --git a/sa-token-bom/pom.xml b/sa-token-bom/pom.xml
index 2cfacc31..f94dc444 100644
--- a/sa-token-bom/pom.xml
+++ b/sa-token-bom/pom.xml
@@ -13,7 +13,7 @@
https://github.com/dromara/sa-token
- 1.40.0
+ 1.41.0
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginHolder.java b/sa-token-core/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginHolder.java
index 754c30de..a057482e 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginHolder.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginHolder.java
@@ -72,12 +72,12 @@ public class SaTokenPluginHolder {
*
*/
public synchronized void loaderPlugins() {
- SaManager.getLog().info("SPI 插件加载开始 ...");
+ SaManager.getLog().info("SPI plugin loading start ...");
List 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;
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
index 8f6ed887..95e21939 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
@@ -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());
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/parameter/SaLoginParameter.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/parameter/SaLoginParameter.java
index 2ca7fb31..476ff8c2 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/parameter/SaLoginParameter.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/parameter/SaLoginParameter.java
@@ -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 对象
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
index ca009e75..da5681ef 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
@@ -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
diff --git a/sa-token-demo/pom.xml b/sa-token-demo/pom.xml
index c81b0099..26ebcbd4 100644
--- a/sa-token-demo/pom.xml
+++ b/sa-token-demo/pom.xml
@@ -42,10 +42,10 @@
sa-token-demo-sso/sa-token-demo-sso3-client
sa-token-demo-sso/sa-token-demo-sso3-client-test2
sa-token-demo-sso/sa-token-demo-sso3-client-nosdk
-
-
-
-
+ sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon
+ sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon
+ sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon
+ sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon
sa-token-demo-test
sa-token-demo-thymeleaf
sa-token-demo-webflux
diff --git a/sa-token-demo/sa-token-demo-alone-redis-cluster/pom.xml b/sa-token-demo/sa-token-demo-alone-redis-cluster/pom.xml
index e3a53a40..bd05ccfd 100644
--- a/sa-token-demo/sa-token-demo-alone-redis-cluster/pom.xml
+++ b/sa-token-demo/sa-token-demo-alone-redis-cluster/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-alone-redis/pom.xml b/sa-token-demo/sa-token-demo-alone-redis/pom.xml
index f3b165f8..57d2bc33 100644
--- a/sa-token-demo/sa-token-demo-alone-redis/pom.xml
+++ b/sa-token-demo/sa-token-demo-alone-redis/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-beetl/pom.xml b/sa-token-demo/sa-token-demo-beetl/pom.xml
index b6ec7dcd..c5de1128 100644
--- a/sa-token-demo/sa-token-demo-beetl/pom.xml
+++ b/sa-token-demo/sa-token-demo-beetl/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-bom-import/pom.xml b/sa-token-demo/sa-token-demo-bom-import/pom.xml
index 79452582..c6b1044e 100644
--- a/sa-token-demo/sa-token-demo-bom-import/pom.xml
+++ b/sa-token-demo/sa-token-demo-bom-import/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
@@ -73,7 +73,7 @@
cn.dev33
sa-token-bom
- 1.40.0
+ 1.41.0
pom
import
diff --git a/sa-token-demo/sa-token-demo-caffeine/pom.xml b/sa-token-demo/sa-token-demo-caffeine/pom.xml
index b16941f5..cbc4abe7 100644
--- a/sa-token-demo/sa-token-demo-caffeine/pom.xml
+++ b/sa-token-demo/sa-token-demo-caffeine/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-case/pom.xml b/sa-token-demo/sa-token-demo-case/pom.xml
index 7b55d59f..3ccf7872 100644
--- a/sa-token-demo/sa-token-demo-case/pom.xml
+++ b/sa-token-demo/sa-token-demo-case/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java
index 5285729f..b12a9833 100644
--- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java
+++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java
@@ -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
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5
+ *
+ * @param tokenValue 指定 token
+ */
+ public static void kickoutByTokenValue(String tokenValue) {
+ stpLogic.kickoutByTokenValue(tokenValue);
+ }
+
+ /**
+ * 踢人下线,根据指定 token、注销参数
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5
+ *
+ * @param tokenValue 指定 token
+ * @param logoutParameter 注销参数
+ */
+ public static void kickoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
+ stpLogic.kickoutByTokenValue(tokenValue, logoutParameter);
+ }
+
+ /**
+ * 顶人下线,根据指定 token
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
+ *
+ * @param tokenValue 指定 token
+ */
+ public static void replacedByTokenValue(String tokenValue) {
+ stpLogic.replacedByTokenValue(tokenValue);
+ }
+
+ /**
+ * 顶人下线,根据指定 token、注销参数
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
+ *
+ * @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 和 注销参数
* 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5
*
- * @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
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
+ *
+ * @param loginId 账号id
+ */
+ public static void replaced(Object loginId) {
+ stpLogic.replaced(loginId);
}
/**
@@ -302,6 +386,47 @@ public class StpUserUtil {
stpLogic.replaced(loginId, deviceType);
}
+ /**
+ * 顶人下线,根据账号id 和 注销参数
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
+ *
+ * @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 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 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);
+ }
+
// ------------------- 会话管理 -------------------
diff --git a/sa-token-demo/sa-token-demo-device-lock/pom.xml b/sa-token-demo/sa-token-demo-device-lock/pom.xml
index 33352b66..3bec7f86 100644
--- a/sa-token-demo/sa-token-demo-device-lock/pom.xml
+++ b/sa-token-demo/sa-token-demo-device-lock/pom.xml
@@ -18,7 +18,7 @@
- 1.40.0
+ 1.41.0
com.pj.SaTokenDeviceLockApplication
diff --git a/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo-consumer/pom.xml b/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo-consumer/pom.xml
index 47db6786..f3cdf1b7 100644
--- a/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo-consumer/pom.xml
+++ b/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo-consumer/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.40.0
+ 1.41.0
2.7.21
1.4.2
diff --git a/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo-provider/pom.xml b/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo-provider/pom.xml
index ba850c4f..5f241006 100644
--- a/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo-provider/pom.xml
+++ b/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo-provider/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.40.0
+ 1.41.0
2.7.21
1.4.2
diff --git a/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo3-consumer/pom.xml b/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo3-consumer/pom.xml
index b9c0aaea..a50daf90 100644
--- a/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo3-consumer/pom.xml
+++ b/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo3-consumer/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.40.0
+ 1.41.0
3.2.2
2.2.2
diff --git a/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo3-provider/pom.xml b/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo3-provider/pom.xml
index 5d98c172..d71b57fa 100644
--- a/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo3-provider/pom.xml
+++ b/sa-token-demo/sa-token-demo-dubbo/sa-token-demo-dubbo3-provider/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.40.0
+ 1.41.0
3.2.2
2.2.2
diff --git a/sa-token-demo/sa-token-demo-freemarker/pom.xml b/sa-token-demo/sa-token-demo-freemarker/pom.xml
index a5093a8b..ca7555c5 100644
--- a/sa-token-demo/sa-token-demo-freemarker/pom.xml
+++ b/sa-token-demo/sa-token-demo-freemarker/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-grpc/pom.xml b/sa-token-demo/sa-token-demo-grpc/pom.xml
index 381b871b..52031da4 100644
--- a/sa-token-demo/sa-token-demo-grpc/pom.xml
+++ b/sa-token-demo/sa-token-demo-grpc/pom.xml
@@ -27,7 +27,7 @@
UTF-8
UTF-8
1.18.10
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-hutool-timed-cache/pom.xml b/sa-token-demo/sa-token-demo-hutool-timed-cache/pom.xml
index a00e4c05..36fa908c 100644
--- a/sa-token-demo/sa-token-demo-hutool-timed-cache/pom.xml
+++ b/sa-token-demo/sa-token-demo-hutool-timed-cache/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-jwt/pom.xml b/sa-token-demo/sa-token-demo-jwt/pom.xml
index 6e554c48..6979cae4 100644
--- a/sa-token-demo/sa-token-demo-jwt/pom.xml
+++ b/sa-token-demo/sa-token-demo-jwt/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/SaTokenConfigure.java
index d689844d..75ef0e09 100644
--- a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/SaTokenConfigure.java
+++ b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/SaTokenConfigure.java
@@ -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();
}
}
diff --git a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/test/TestJwtController.java b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/test/TestJwtController.java
index 4a64dae5..ef94c696 100644
--- a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/test/TestJwtController.java
+++ b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/test/TestJwtController.java
@@ -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
diff --git a/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-client/pom.xml b/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-client/pom.xml
index d7d2b389..b4ceb79d 100644
--- a/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-client/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/pom.xml b/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/pom.xml
index 675a538e..0aa17023 100644
--- a/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/pom.xml
+++ b/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-quick-login-sb3/pom.xml b/sa-token-demo/sa-token-demo-quick-login-sb3/pom.xml
index a0b872d2..fe8c381c 100644
--- a/sa-token-demo/sa-token-demo-quick-login-sb3/pom.xml
+++ b/sa-token-demo/sa-token-demo-quick-login-sb3/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-quick-login/pom.xml b/sa-token-demo/sa-token-demo-quick-login/pom.xml
index 52319905..50cfbf32 100644
--- a/sa-token-demo/sa-token-demo-quick-login/pom.xml
+++ b/sa-token-demo/sa-token-demo-quick-login/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-remember-me/sa-token-demo-remember-me-server/pom.xml b/sa-token-demo/sa-token-demo-remember-me/sa-token-demo-remember-me-server/pom.xml
index e652a7e1..a66460e4 100644
--- a/sa-token-demo/sa-token-demo-remember-me/sa-token-demo-remember-me-server/pom.xml
+++ b/sa-token-demo/sa-token-demo-remember-me/sa-token-demo-remember-me-server/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-solon-redisson/pom.xml b/sa-token-demo/sa-token-demo-solon-redisson/pom.xml
index 9934d46f..db42dea2 100644
--- a/sa-token-demo/sa-token-demo-solon-redisson/pom.xml
+++ b/sa-token-demo/sa-token-demo-solon-redisson/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
UTF-8
UTF-8
diff --git a/sa-token-demo/sa-token-demo-solon/pom.xml b/sa-token-demo/sa-token-demo-solon/pom.xml
index ca6cf89c..52791745 100644
--- a/sa-token-demo/sa-token-demo-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-solon/pom.xml
@@ -19,7 +19,7 @@
17
17
17
- 1.40.0
+ 1.41.0
UTF-8
UTF-8
diff --git a/sa-token-demo/sa-token-demo-springboot-redis/pom.xml b/sa-token-demo/sa-token-demo-springboot-redis/pom.xml
index 98ec6f92..e967f11f 100644
--- a/sa-token-demo/sa-token-demo-springboot-redis/pom.xml
+++ b/sa-token-demo/sa-token-demo-springboot-redis/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/pom.xml b/sa-token-demo/sa-token-demo-springboot-redisson/pom.xml
index 3710cd06..044b6b29 100644
--- a/sa-token-demo/sa-token-demo-springboot-redisson/pom.xml
+++ b/sa-token-demo/sa-token-demo-springboot-redisson/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-springboot/pom.xml b/sa-token-demo/sa-token-demo-springboot/pom.xml
index 98d982f5..bea314d7 100644
--- a/sa-token-demo/sa-token-demo-springboot/pom.xml
+++ b/sa-token-demo/sa-token-demo-springboot/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/pom.xml b/sa-token-demo/sa-token-demo-springboot3-redis/pom.xml
index f4f1b72f..a3f67e9b 100644
--- a/sa-token-demo/sa-token-demo-springboot3-redis/pom.xml
+++ b/sa-token-demo/sa-token-demo-springboot3-redis/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-ssm/pom.xml b/sa-token-demo/sa-token-demo-ssm/pom.xml
index e0896ace..18ebd6e7 100644
--- a/sa-token-demo/sa-token-demo-ssm/pom.xml
+++ b/sa-token-demo/sa-token-demo-ssm/pom.xml
@@ -27,7 +27,7 @@
5.3.7
2.16.1
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/pom.xml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/pom.xml
index 1db92de3..5ecb506e 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
index 4d8ed39c..e23de5f6 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
@@ -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;
}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/pom.xml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/pom.xml
index ab0f2404..92f56ff8 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/pom.xml
@@ -16,15 +16,20 @@
- 1.40.0
+ 1.41.0
-
+
+
+ org.noear
+ solon-web
+ ${solon.version}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaConfig.java
index 6031f505..6215ddb7 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaConfig.java
@@ -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;
}
}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/pom.xml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/pom.xml
index 7456c38c..449d749e 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/pom.xml
@@ -16,15 +16,20 @@
- 1.40.0
+ 1.41.0
-
+
+
+ org.noear
+ solon-web
+ ${solon.version}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaConfig.java
index 03b64a33..a77fad4d 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaConfig.java
@@ -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;
}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/pom.xml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/pom.xml
index c83e6e2d..b39cc552 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/pom.xml
@@ -16,15 +16,20 @@
- 1.40.0
+ 1.41.0
+
+
+
+
org.noear
- solon-api
+ solon-web
+ ${solon.version}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/SaConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/SaConfig.java
index 590f69f1..511879e4 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/SaConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/SaConfig.java
@@ -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;
}
}
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/pom.xml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/pom.xml
index 751bf29c..384d6e1c 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/pom.xml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/pom.xml
index 1d4984fe..9a667196 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/pom.xml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/pom.xml
index 2168b94a..ddaeca3e 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-test2/pom.xml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-test2/pom.xml
index 3f4a4d58..1185ed16 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-test2/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-test2/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/pom.xml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/pom.xml
index edd9e8d8..36b3f08e 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-test/pom.xml b/sa-token-demo/sa-token-demo-test/pom.xml
index 69f55a49..dac828ca 100644
--- a/sa-token-demo/sa-token-demo-test/pom.xml
+++ b/sa-token-demo/sa-token-demo-test/pom.xml
@@ -18,7 +18,7 @@
- 1.40.0
+ 1.41.0
com.pj.SaTokenApplication
diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java
index 82654893..b12a9833 100644
--- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java
+++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java
@@ -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
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5
+ *
+ * @param tokenValue 指定 token
+ */
+ public static void kickoutByTokenValue(String tokenValue) {
+ stpLogic.kickoutByTokenValue(tokenValue);
+ }
+
+ /**
+ * 踢人下线,根据指定 token、注销参数
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5
+ *
+ * @param tokenValue 指定 token
+ * @param logoutParameter 注销参数
+ */
+ public static void kickoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
+ stpLogic.kickoutByTokenValue(tokenValue, logoutParameter);
+ }
+
+ /**
+ * 顶人下线,根据指定 token
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
+ *
+ * @param tokenValue 指定 token
+ */
+ public static void replacedByTokenValue(String tokenValue) {
+ stpLogic.replacedByTokenValue(tokenValue);
+ }
+
+ /**
+ * 顶人下线,根据指定 token、注销参数
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
+ *
+ * @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 {
* 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5
*
* @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 和 注销参数
* 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5
*
- * @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
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
+ *
+ * @param loginId 账号id
+ */
+ public static void replaced(Object loginId) {
+ stpLogic.replaced(loginId);
}
/**
@@ -295,12 +380,53 @@ public class StpUserUtil {
* 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
*
* @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 和 注销参数
+ * 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4
+ *
+ * @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 {
*
*
* @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 getTokenValueListByLoginId(Object loginId, String device) {
- return stpLogic.getTokenValueListByLoginId(loginId, device);
+ public static List getTokenValueListByLoginId(Object loginId, String deviceType) {
+ return stpLogic.getTokenValueListByLoginId(loginId, deviceType);
+ }
+
+ /**
+ * 获取指定账号 id 已登录设备信息集合
+ *
+ * @param loginId 账号id
+ * @return 此 loginId 的所有登录 token
+ */
+ public static List getTerminalListByLoginId(Object loginId) {
+ return stpLogic.getTerminalListByLoginId(loginId);
+ }
+
+ /**
+ * 获取指定账号 id 指定设备类型端的已登录设备信息集合
+ *
+ * @param loginId 账号id
+ * @param deviceType 设备类型,填 null 代表不限设备类型
+ * @return /
+ */
+ public static List getTerminalListByLoginId(Object loginId, String deviceType) {
+ return stpLogic.getTerminalListByLoginId(loginId, deviceType);
+ }
+
+ /**
+ * 获取指定账号 id 已登录设备信息集合,执行特定函数
+ *
+ * @param loginId 账号id
+ * @param function 需要执行的函数
+ */
+ public static void forEachTerminalList(Object loginId, SaTwoParamFunction 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();
+ }
+
+
+ // ------------------- 过期方法 -------------------
+
+ /**
+ * 请更换为 getLoginDeviceType
+ * 返回当前会话的登录设备类型
+ *
+ * @return 当前令牌的登录设备类型
+ */
+ @Deprecated
+ public static String getLoginDevice() {
+ return stpLogic.getLoginDevice();
+ }
+
+ /**
+ * 请更换为 getLoginDeviceTypeByToken
+ * 返回指定 token 会话的登录设备类型
+ *
+ * @param tokenValue 指定token
+ * @return 当前令牌的登录设备类型
+ */
+ @Deprecated
+ public static String getLoginDeviceByToken(String tokenValue) {
+ return stpLogic.getLoginDeviceByToken(tokenValue);
+ }
+
}
diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java
index 674d1f52..6e3a42c9 100644
--- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java
+++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java
@@ -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")
diff --git a/sa-token-demo/sa-token-demo-thymeleaf/pom.xml b/sa-token-demo/sa-token-demo-thymeleaf/pom.xml
index 51a45d84..2cd6adf8 100644
--- a/sa-token-demo/sa-token-demo-thymeleaf/pom.xml
+++ b/sa-token-demo/sa-token-demo-thymeleaf/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
@@ -47,7 +47,7 @@
cn.dev33
- sa-token-dialect-thymeleaf
+ sa-token-thymeleaf
${sa-token.version}
diff --git a/sa-token-demo/sa-token-demo-webflux-springboot3/pom.xml b/sa-token-demo/sa-token-demo-webflux-springboot3/pom.xml
index 52988f8d..262e149e 100644
--- a/sa-token-demo/sa-token-demo-webflux-springboot3/pom.xml
+++ b/sa-token-demo/sa-token-demo-webflux-springboot3/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-webflux/pom.xml b/sa-token-demo/sa-token-demo-webflux/pom.xml
index c6de2057..7f331a2e 100644
--- a/sa-token-demo/sa-token-demo-webflux/pom.xml
+++ b/sa-token-demo/sa-token-demo-webflux/pom.xml
@@ -16,7 +16,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-websocket-spring/pom.xml b/sa-token-demo/sa-token-demo-websocket-spring/pom.xml
index a80fa928..c472b501 100644
--- a/sa-token-demo/sa-token-demo-websocket-spring/pom.xml
+++ b/sa-token-demo/sa-token-demo-websocket-spring/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-demo/sa-token-demo-websocket/pom.xml b/sa-token-demo/sa-token-demo-websocket/pom.xml
index 6f9177d3..087d57a5 100644
--- a/sa-token-demo/sa-token-demo-websocket/pom.xml
+++ b/sa-token-demo/sa-token-demo-websocket/pom.xml
@@ -17,7 +17,7 @@
- 1.40.0
+ 1.41.0
diff --git a/sa-token-dependencies/pom.xml b/sa-token-dependencies/pom.xml
index 4f934e4e..7288de32 100644
--- a/sa-token-dependencies/pom.xml
+++ b/sa-token-dependencies/pom.xml
@@ -12,7 +12,7 @@
Sa-Token Dependencies
- 1.40.0
+ 1.41.0
2.7.18
diff --git a/sa-token-doc/README.md b/sa-token-doc/README.md
index 54dbd7e5..525cbaf9 100644
--- a/sa-token-doc/README.md
+++ b/sa-token-doc/README.md
@@ -1,7 +1,7 @@
-Sa-Token v1.40.0
+Sa-Token v1.41.0
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!
diff --git a/sa-token-doc/doc.html b/sa-token-doc/doc.html
index f2cdce29..c8b658d7 100644
--- a/sa-token-doc/doc.html
+++ b/sa-token-doc/doc.html
@@ -18,7 +18,7 @@
Sa-Token
-
v1.40.0
+
v1.41.0
@@ -28,6 +28,7 @@