1
0
mirror of synced 2026-05-22 14:43:15 +00:00

v1.41.0 update

This commit is contained in:
click33
2025-03-21 14:22:00 +08:00
parent db611b8337
commit 5e8a429d37
67 changed files with 617 additions and 143 deletions
+4 -4
View File
@@ -42,10 +42,10 @@
<module>sa-token-demo-sso/sa-token-demo-sso3-client</module>
<module>sa-token-demo-sso/sa-token-demo-sso3-client-test2</module>
<module>sa-token-demo-sso/sa-token-demo-sso3-client-nosdk</module>
<!-- <module>sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon</module>-->
<!-- <module>sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon</module>-->
<!-- <module>sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon</module>-->
<!-- <module>sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon</module>-->
<module>sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon</module>
<module>sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon</module>
<module>sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon</module>
<module>sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon</module>
<module>sa-token-demo-test</module>
<module>sa-token-demo-thymeleaf</module>
<module>sa-token-demo-webflux</module>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
+1 -1
View File
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -73,7 +73,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-bom</artifactId>
<version>1.40.0</version>
<version>1.41.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
+1 -1
View File
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
+1 -1
View File
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -2,17 +2,19 @@ package com.pj.satoken;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.fun.SaTwoParamFunction;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.SaTerminalInfo;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import cn.dev33.satoken.stp.parameter.SaLogoutParameter;
import java.util.List;
/**
* Sa-Token 权限认证工具类 (User 版)
* 【User账号体系】Sa-Token 权限认证工具类
*
* @author click33
* @since 1.0.0
@@ -223,7 +225,7 @@ public class StpUserUtil {
return stpLogic.getOrCreateLoginSession(id);
}
// --- 注销
// --- 注销 (根据 token)
/**
* 在当前客户端会话注销
@@ -232,6 +234,76 @@ public class StpUserUtil {
stpLogic.logout();
}
/**
* 在当前客户端会话注销,根据注销参数
*/
public static void logout(SaLogoutParameter logoutParameter) {
stpLogic.logout(logoutParameter);
}
/**
* 注销下线,根据指定 token
*
* @param tokenValue 指定 token
*/
public static void logoutByTokenValue(String tokenValue) {
stpLogic.logoutByTokenValue(tokenValue);
}
/**
* 注销下线,根据指定 token、注销参数
*
* @param tokenValue 指定 token
* @param logoutParameter /
*/
public static void logoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.logoutByTokenValue(tokenValue, logoutParameter);
}
/**
* 踢人下线,根据指定 token
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
*/
public static void kickoutByTokenValue(String tokenValue) {
stpLogic.kickoutByTokenValue(tokenValue);
}
/**
* 踢人下线,根据指定 token、注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
* @param logoutParameter 注销参数
*/
public static void kickoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.kickoutByTokenValue(tokenValue, logoutParameter);
}
/**
* 顶人下线,根据指定 token
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param tokenValue 指定 token
*/
public static void replacedByTokenValue(String tokenValue) {
stpLogic.replacedByTokenValue(tokenValue);
}
/**
* 顶人下线,根据指定 token、注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param tokenValue 指定 token
* @param logoutParameter /
*/
public static void replacedByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.replacedByTokenValue(tokenValue, logoutParameter);
}
// --- 注销 (根据 loginId)
/**
* 会话注销,根据账号id
*
@@ -252,12 +324,13 @@ public class StpUserUtil {
}
/**
* 会话注销,根据指定 Token
* 会话注销,根据账号id 和 注销参数
*
* @param tokenValue 指定 token
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void logoutByTokenValue(String tokenValue) {
stpLogic.logoutByTokenValue(tokenValue);
public static void logout(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.logout(loginId, logoutParameter);
}
/**
@@ -282,13 +355,24 @@ public class StpUserUtil {
}
/**
* 踢人下线,根据指定 token
* 踢人下线,根据账号id 和 注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void kickoutByTokenValue(String tokenValue) {
stpLogic.kickoutByTokenValue(tokenValue);
public static void kickout(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.kickout(loginId, logoutParameter);
}
/**
* 顶人下线,根据账号id
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param loginId 账号id
*/
public static void replaced(Object loginId) {
stpLogic.replaced(loginId);
}
/**
@@ -302,6 +386,47 @@ public class StpUserUtil {
stpLogic.replaced(loginId, deviceType);
}
/**
* 顶人下线,根据账号id 和 注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void replaced(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.replaced(loginId, logoutParameter);
}
// --- 注销 (会话管理辅助方法)
/**
* 在 Account-Session 上移除 Terminal 信息 (注销下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByLogout(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByLogout(session, terminal);
}
/**
* 在 Account-Session 上移除 Terminal 信息 (踢人下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByKickout(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByKickout(session, terminal);
}
/**
* 在 Account-Session 上移除 Terminal 信息 (顶人下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByReplaced(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByReplaced(session, terminal);
}
// 会话查询
/**
@@ -386,7 +511,7 @@ public class StpUserUtil {
}
/**
* 获取指定 token 对应的账号id,如果未登录,则返回 null
* 获取指定 token 对应的账号id,如果 token 无效或 token 处于被踢、被顶、被冻结等状态,则返回 null
*
* @param tokenValue token
* @return 账号id
@@ -395,6 +520,16 @@ public class StpUserUtil {
return stpLogic.getLoginIdByToken(tokenValue);
}
/**
* 获取指定 token 对应的账号id,如果 token 无效或 token 处于被踢、被顶等状态 (不考虑被冻结),则返回 null
*
* @param tokenValue token
* @return 账号id
*/
public Object getLoginIdByTokenNotThinkFreeze(String tokenValue) {
return stpLogic.getLoginIdByTokenNotThinkFreeze(tokenValue);
}
/**
* 获取当前 Token 的扩展信息(此函数只在jwt模式下生效)
*
@@ -823,7 +958,17 @@ public class StpUserUtil {
}
/**
* 获取指定账号 id 指定设备类型端的 SaTerminalInfo 集合
* 获取指定账号 id 已登录设备信息集合
*
* @param loginId 账号id
* @return 此 loginId 的所有登录 token
*/
public static List<SaTerminalInfo> getTerminalListByLoginId(Object loginId) {
return stpLogic.getTerminalListByLoginId(loginId);
}
/**
* 获取指定账号 id 指定设备类型端的已登录设备信息集合
*
* @param loginId 账号id
* @param deviceType 设备类型,填 null 代表不限设备类型
@@ -833,6 +978,16 @@ public class StpUserUtil {
return stpLogic.getTerminalListByLoginId(loginId, deviceType);
}
/**
* 获取指定账号 id 已登录设备信息集合,执行特定函数
*
* @param loginId 账号id
* @param function 需要执行的函数
*/
public static void forEachTerminalList(Object loginId, SaTwoParamFunction<SaSession, SaTerminalInfo> function) {
stpLogic.forEachTerminalList(loginId, function);
}
/**
* 返回当前会话的登录设备类型
*
@@ -861,6 +1016,15 @@ public class StpUserUtil {
return stpLogic.getTokenLastActiveTime();
}
/**
* 判断对于指定 loginId 来讲,指定设备 id 是否为可信任设备
* @param deviceId /
* @return /
*/
public static boolean isTrustDeviceId(Object userId, String deviceId) {
return stpLogic.isTrustDeviceId(userId, deviceId);
}
// ------------------- 会话管理 -------------------
@@ -18,7 +18,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
<java.run.main.class>com.pj.SaTokenDeviceLockApplication</java.run.main.class>
</properties>
@@ -17,7 +17,7 @@
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
<dubbo.version>2.7.21</dubbo.version>
<nacos.version>1.4.2</nacos.version>
</properties>
@@ -17,7 +17,7 @@
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
<dubbo.version>2.7.21</dubbo.version>
<nacos.version>1.4.2</nacos.version>
</properties>
@@ -17,7 +17,7 @@
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
<dubbo.version>3.2.2</dubbo.version>
<nacos.version>2.2.2</nacos.version>
</properties>
@@ -17,7 +17,7 @@
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
<dubbo.version>3.2.2</dubbo.version>
<nacos.version>2.2.2</nacos.version>
</properties>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
+1 -1
View File
@@ -27,7 +27,7 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.version>1.18.10</lombok.version>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
+1 -1
View File
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -1,13 +1,12 @@
package com.pj.satoken;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
import cn.dev33.satoken.stp.StpLogic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
@@ -32,7 +31,9 @@ public class SaTokenConfigure implements WebMvcConfigurer {
*/
@Bean
public StpLogic getStpLogicJwt() {
return new StpLogicJwtForSimple();
return new StpLogicJwtForSimple();
// return new StpLogicJwtForMixin();
// return new StpLogicJwtForStateless();
}
}
@@ -3,6 +3,7 @@ package com.pj.test;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.pj.util.AjaxJson;
@@ -29,15 +30,15 @@ public class TestJwtController {
System.out.println("当前是否登录:" + StpUtil.isLogin());
System.out.println("当前登录账号:" + StpUtil.getLoginIdDefaultNull());
StpUtil.login(id); // 在当前会话登录此账号
StpUtil.login(id, new SaLoginParameter().setExtra("name", "张三")); // 在当前会话登录此账号
System.out.println("登录成功");
System.out.println("当前是否登录:" + StpUtil.isLogin());
System.out.println("当前登录账号:" + StpUtil.getLoginId());
// System.out.println("当前登录账号并转为int" + StpUtil.getLoginIdAsInt());
System.out.println("当前登录设备:" + StpUtil.getLoginDevice());
System.out.println("当前登录设备:" + StpUtil.getLoginDeviceType());
// System.out.println("当前token信息:" + StpUtil.getTokenInfo());
return AjaxJson.getSuccess();
return AjaxJson.getSuccess().setData(StpUtil.getTokenValue());
}
// 打印当前token信息, 浏览器访问: http://localhost:8081/test/tokenInfo
@@ -17,7 +17,7 @@
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- 定义 Sa-Token 版本号 -->
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- 定义 Sa-Token 版本号 -->
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
</parent>
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
+1 -1
View File
@@ -19,7 +19,7 @@
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.traget>17</maven.compiler.traget>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
+1 -1
View File
@@ -27,7 +27,7 @@
<!--<spring.version>4.2.5.RELEASE</spring.version>-->
<spring.version>5.3.7</spring.version>
<jackson.version>2.16.1</jackson.version>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -1,7 +1,7 @@
package com.pj.sso;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
import cn.dev33.satoken.dao.SaTokenDaoForRedisx;
import cn.dev33.satoken.sso.config.SaSsoServerConfig;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
@@ -21,7 +21,7 @@ public class SsoConfig {
* 构建建 SaToken redis dao(如果不需要 redis;可以注释掉)
* */
@Bean
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoForRedisx saTokenDao) {
return saTokenDao;
}
@@ -16,15 +16,20 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
<!-- Solon 依赖 -->
<dependency>
<!--<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-api</artifactId>
</dependency>-->
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-web</artifactId>
<version>${solon.version}</version>
</dependency>
<!-- Sa-Token 权限认证, 在线文档:https://sa-token.cc/ -->
@@ -1,7 +1,7 @@
package com.pj;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
import cn.dev33.satoken.dao.SaTokenDaoForRedisx;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
import org.noear.solon.annotation.Inject;
@@ -16,7 +16,7 @@ public class SaConfig {
* 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis
* */
@Bean
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoForRedisx saTokenDao) {
return saTokenDao;
}
}
@@ -16,15 +16,20 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
<!-- Solon 依赖 -->
<dependency>
<!--<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-api</artifactId>
</dependency>-->
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-web</artifactId>
<version>${solon.version}</version>
</dependency>
<!-- Sa-Token 权限认证, 在线文档:https://sa-token.cc/ -->
@@ -1,12 +1,11 @@
package com.pj;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
import cn.dev33.satoken.dao.SaTokenDaoForRedisx;
import cn.dev33.satoken.sso.config.SaSsoClientConfig;
import com.dtflys.forest.Forest;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
/**
@@ -19,7 +18,7 @@ public class SaConfig {
* 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis
* */
@Bean
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoForRedisx saTokenDao) {
return saTokenDao;
}
@@ -16,15 +16,20 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
<!-- Solon 依赖 -->
<!-- <dependency>-->
<!-- <groupId>org.noear</groupId>-->
<!-- <artifactId>solon-api</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-api</artifactId>
<artifactId>solon-web</artifactId>
<version>${solon.version}</version>
</dependency>
<!-- Http 请求工具 -->
@@ -1,7 +1,7 @@
package com.pj;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
import cn.dev33.satoken.dao.SaTokenDaoForRedisx;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
import org.noear.solon.annotation.Inject;
@@ -16,7 +16,7 @@ public class SaConfig {
* 构建建 SaToken redis dao(如果不需要 redis;可以注释掉)
* */
@Bean
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoForRedisx saTokenDao) {
return saTokenDao;
}
}
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
+1 -1
View File
@@ -18,7 +18,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
<java.run.main.class>com.pj.SaTokenApplication</java.run.main.class>
</properties>
@@ -2,16 +2,19 @@ package com.pj.satoken;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.fun.SaTwoParamFunction;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import cn.dev33.satoken.session.SaTerminalInfo;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import cn.dev33.satoken.stp.parameter.SaLogoutParameter;
import java.util.List;
/**
* Sa-Token 权限认证工具类 (User 版)
* 【User账号体系】Sa-Token 权限认证工具类
*
* @author click33
* @since 1.0.0
@@ -155,10 +158,10 @@ public class StpUserUtil {
* 会话登录,并指定登录设备类型
*
* @param id 账号id,建议的类型:(long | int | String
* @param device 设备类型
* @param deviceType 设备类型
*/
public static void login(Object id, String device) {
stpLogic.login(id, device);
public static void login(Object id, String deviceType) {
stpLogic.login(id, deviceType);
}
/**
@@ -222,7 +225,7 @@ public class StpUserUtil {
return stpLogic.getOrCreateLoginSession(id);
}
// --- 注销
// --- 注销 (根据 token)
/**
* 在当前客户端会话注销
@@ -231,6 +234,76 @@ public class StpUserUtil {
stpLogic.logout();
}
/**
* 在当前客户端会话注销,根据注销参数
*/
public static void logout(SaLogoutParameter logoutParameter) {
stpLogic.logout(logoutParameter);
}
/**
* 注销下线,根据指定 token
*
* @param tokenValue 指定 token
*/
public static void logoutByTokenValue(String tokenValue) {
stpLogic.logoutByTokenValue(tokenValue);
}
/**
* 注销下线,根据指定 token、注销参数
*
* @param tokenValue 指定 token
* @param logoutParameter /
*/
public static void logoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.logoutByTokenValue(tokenValue, logoutParameter);
}
/**
* 踢人下线,根据指定 token
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
*/
public static void kickoutByTokenValue(String tokenValue) {
stpLogic.kickoutByTokenValue(tokenValue);
}
/**
* 踢人下线,根据指定 token、注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
* @param logoutParameter 注销参数
*/
public static void kickoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.kickoutByTokenValue(tokenValue, logoutParameter);
}
/**
* 顶人下线,根据指定 token
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param tokenValue 指定 token
*/
public static void replacedByTokenValue(String tokenValue) {
stpLogic.replacedByTokenValue(tokenValue);
}
/**
* 顶人下线,根据指定 token、注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param tokenValue 指定 token
* @param logoutParameter /
*/
public static void replacedByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
stpLogic.replacedByTokenValue(tokenValue, logoutParameter);
}
// --- 注销 (根据 loginId)
/**
* 会话注销,根据账号id
*
@@ -244,19 +317,20 @@ public class StpUserUtil {
* 会话注销,根据账号id 和 设备类型
*
* @param loginId 账号id
* @param device 设备类型 (填 null 代表注销该账号的所有设备类型)
* @param deviceType 设备类型 (填 null 代表注销该账号的所有设备类型)
*/
public static void logout(Object loginId, String device) {
stpLogic.logout(loginId, device);
public static void logout(Object loginId, String deviceType) {
stpLogic.logout(loginId, deviceType);
}
/**
* 会话注销,根据指定 Token
* 会话注销,根据账号id 和 注销参数
*
* @param tokenValue 指定 token
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void logoutByTokenValue(String tokenValue) {
stpLogic.logoutByTokenValue(tokenValue);
public static void logout(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.logout(loginId, logoutParameter);
}
/**
@@ -274,20 +348,31 @@ public class StpUserUtil {
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param loginId 账号id
* @param device 设备类型 (填 null 代表踢出该账号的所有设备类型)
* @param deviceType 设备类型 (填 null 代表踢出该账号的所有设备类型)
*/
public static void kickout(Object loginId, String device) {
stpLogic.kickout(loginId, device);
public static void kickout(Object loginId, String deviceType) {
stpLogic.kickout(loginId, deviceType);
}
/**
* 踢人下线,根据指定 token
* 踢人下线,根据账号id 和 注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
*
* @param tokenValue 指定 token
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void kickoutByTokenValue(String tokenValue) {
stpLogic.kickoutByTokenValue(tokenValue);
public static void kickout(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.kickout(loginId, logoutParameter);
}
/**
* 顶人下线,根据账号id
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param loginId 账号id
*/
public static void replaced(Object loginId) {
stpLogic.replaced(loginId);
}
/**
@@ -295,12 +380,53 @@ public class StpUserUtil {
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param loginId 账号id
* @param device 设备类型 (填 null 代表顶替该账号的所有设备类型)
* @param deviceType 设备类型 (填 null 代表顶替该账号的所有设备类型)
*/
public static void replaced(Object loginId, String device) {
stpLogic.replaced(loginId, device);
public static void replaced(Object loginId, String deviceType) {
stpLogic.replaced(loginId, deviceType);
}
/**
* 顶人下线,根据账号id 和 注销参数
* <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
*
* @param loginId 账号id
* @param logoutParameter 注销参数
*/
public static void replaced(Object loginId, SaLogoutParameter logoutParameter) {
stpLogic.replaced(loginId, logoutParameter);
}
// --- 注销 (会话管理辅助方法)
/**
* 在 Account-Session 上移除 Terminal 信息 (注销下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByLogout(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByLogout(session, terminal);
}
/**
* 在 Account-Session 上移除 Terminal 信息 (踢人下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByKickout(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByKickout(session, terminal);
}
/**
* 在 Account-Session 上移除 Terminal 信息 (顶人下线方式)
* @param session /
* @param terminal /
*/
public static void removeTerminalByReplaced(SaSession session, SaTerminalInfo terminal) {
stpLogic.removeTerminalByReplaced(session, terminal);
}
// 会话查询
/**
@@ -312,6 +438,15 @@ public class StpUserUtil {
return stpLogic.isLogin();
}
/**
* 判断指定账号是否已经登录
*
* @return 已登录返回 true,未登录返回 false
*/
public static boolean isLogin(Object loginId) {
return stpLogic.isLogin(loginId);
}
/**
* 检验当前会话是否已经登录,如未登录,则抛出异常
*/
@@ -376,7 +511,7 @@ public class StpUserUtil {
}
/**
* 获取指定 token 对应的账号id,如果未登录,则返回 null
* 获取指定 token 对应的账号id,如果 token 无效或 token 处于被踢、被顶、被冻结等状态,则返回 null
*
* @param tokenValue token
* @return 账号id
@@ -385,6 +520,16 @@ public class StpUserUtil {
return stpLogic.getLoginIdByToken(tokenValue);
}
/**
* 获取指定 token 对应的账号id,如果 token 无效或 token 处于被踢、被顶等状态 (不考虑被冻结),则返回 null
*
* @param tokenValue token
* @return 账号id
*/
public Object getLoginIdByTokenNotThinkFreeze(String tokenValue) {
return stpLogic.getLoginIdByTokenNotThinkFreeze(tokenValue);
}
/**
* 获取当前 Token 的扩展信息(此函数只在jwt模式下生效)
*
@@ -784,11 +929,11 @@ public class StpUserUtil {
* </p>
*
* @param loginId 账号id
* @param device 设备类型,填 null 代表不限设备类型
* @param deviceType 设备类型,填 null 代表不限设备类型
* @return token值
*/
public static String getTokenValueByLoginId(Object loginId, String device) {
return stpLogic.getTokenValueByLoginId(loginId, device);
public static String getTokenValueByLoginId(Object loginId, String deviceType) {
return stpLogic.getTokenValueByLoginId(loginId, deviceType);
}
/**
@@ -805,11 +950,42 @@ public class StpUserUtil {
* 获取指定账号 id 指定设备类型端的 token 集合
*
* @param loginId 账号id
* @param device 设备类型,填 null 代表不限设备类型
* @param deviceType 设备类型,填 null 代表不限设备类型
* @return 此 loginId 的所有登录 token
*/
public static List<String> getTokenValueListByLoginId(Object loginId, String device) {
return stpLogic.getTokenValueListByLoginId(loginId, device);
public static List<String> getTokenValueListByLoginId(Object loginId, String deviceType) {
return stpLogic.getTokenValueListByLoginId(loginId, deviceType);
}
/**
* 获取指定账号 id 已登录设备信息集合
*
* @param loginId 账号id
* @return 此 loginId 的所有登录 token
*/
public static List<SaTerminalInfo> getTerminalListByLoginId(Object loginId) {
return stpLogic.getTerminalListByLoginId(loginId);
}
/**
* 获取指定账号 id 指定设备类型端的已登录设备信息集合
*
* @param loginId 账号id
* @param deviceType 设备类型,填 null 代表不限设备类型
* @return /
*/
public static List<SaTerminalInfo> getTerminalListByLoginId(Object loginId, String deviceType) {
return stpLogic.getTerminalListByLoginId(loginId, deviceType);
}
/**
* 获取指定账号 id 已登录设备信息集合,执行特定函数
*
* @param loginId 账号id
* @param function 需要执行的函数
*/
public static void forEachTerminalList(Object loginId, SaTwoParamFunction<SaSession, SaTerminalInfo> function) {
stpLogic.forEachTerminalList(loginId, function);
}
/**
@@ -817,10 +993,39 @@ public class StpUserUtil {
*
* @return 当前令牌的登录设备类型
*/
public static String getLoginDevice() {
public static String getLoginDeviceType() {
return stpLogic.getLoginDeviceType();
}
/**
* 返回指定 token 会话的登录设备类型
*
* @param tokenValue 指定token
* @return 当前令牌的登录设备类型
*/
public static String getLoginDeviceTypeByToken(String tokenValue) {
return stpLogic.getLoginDeviceTypeByToken(tokenValue);
}
/**
* 获取当前 token 的最后活跃时间(13位时间戳),如果不存在则返回 -2
*
* @return /
*/
public static long getTokenLastActiveTime() {
return stpLogic.getTokenLastActiveTime();
}
/**
* 判断对于指定 loginId 来讲,指定设备 id 是否为可信任设备
* @param deviceId /
* @return /
*/
public static boolean isTrustDeviceId(Object userId, String deviceId) {
return stpLogic.isTrustDeviceId(userId, deviceId);
}
// ------------------- 会话管理 -------------------
@@ -1201,10 +1406,48 @@ public class StpUserUtil {
/**
* 在当前会话 结束指定业务标识的二级认证
*
* @param service 业务标识
* @param service 业务标识
*/
public static void closeSafe(String service) {
stpLogic.closeSafe(service);
}
// ------------------- Bean 对象、字段代理 -------------------
/**
* 根据当前配置对象创建一个 SaLoginParameter 对象
*
* @return /
*/
public static SaLoginParameter createSaLoginParameter() {
return stpLogic.createSaLoginParameter();
}
// ------------------- 过期方法 -------------------
/**
* <h2>请更换为 getLoginDeviceType </h2>
* 返回当前会话的登录设备类型
*
* @return 当前令牌的登录设备类型
*/
@Deprecated
public static String getLoginDevice() {
return stpLogic.getLoginDevice();
}
/**
* <h2>请更换为 getLoginDeviceTypeByToken </h2>
* 返回指定 token 会话的登录设备类型
*
* @param tokenValue 指定token
* @return 当前令牌的登录设备类型
*/
@Deprecated
public static String getLoginDeviceByToken(String tokenValue) {
return stpLogic.getLoginDeviceByToken(tokenValue);
}
}
@@ -32,7 +32,7 @@ public class TestController {
StpUtil.login(id, new SaLoginParameter()
.setIsConcurrent(true)
.setIsShare(false)
.setDeviceType(dt)
// .setDeviceType(dt)
.setMaxLoginCount(4)
.setMaxTryTimes(12)
.setTerminalExtra("deviceSimpleTitle", "XiaoMi 15 Ultra")
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -47,7 +47,7 @@
<!-- 在 thymeleaf 标签中使用 Sa-Token -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dialect-thymeleaf</artifactId>
<artifactId>sa-token-thymeleaf</artifactId>
<version>${sa-token.version}</version>
</dependency>
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
+1 -1
View File
@@ -16,7 +16,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>
@@ -17,7 +17,7 @@
<!-- 定义 Sa-Token 版本号 -->
<properties>
<sa-token.version>1.40.0</sa-token.version>
<sa-token.version>1.41.0</sa-token.version>
</properties>
<dependencies>