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 @@

logo

-

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 @@

logo

-

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 @@