From f6f4d337c968e673cf2f19352e35d07120e2b2a5 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Wed, 16 Jun 2021 16:24:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +- .../main/java/cn/dev33/satoken/SaManager.java | 20 +-- .../dev33/satoken/action/SaTokenAction.java | 4 +- .../action/SaTokenActionDefaultImpl.java | 8 +- .../satoken/annotation/SaCheckLogin.java | 2 +- .../satoken/annotation/SaCheckPermission.java | 2 +- .../dev33/satoken/annotation/SaCheckRole.java | 5 +- .../cn/dev33/satoken/annotation/SaMode.java | 4 +- .../exception/DisableLoginException.java | 18 +-- .../satoken/exception/NotLoginException.java | 26 ++-- .../exception/NotPermissionException.java | 18 +-- .../satoken/exception/NotRoleException.java | 18 +-- .../satoken/listener/SaTokenListener.java | 24 ++-- .../listener/SaTokenListenerDefaultImpl.java | 12 +- .../cn/dev33/satoken/router/SaRouterUtil.java | 2 +- .../cn/dev33/satoken/stp/SaTokenInfo.java | 18 +-- .../cn/dev33/satoken/stp/StpInterface.java | 8 +- .../satoken/stp/StpInterfaceDefaultImpl.java | 4 +- .../java/cn/dev33/satoken/stp/StpLogic.java | 116 +++++++++--------- .../java/cn/dev33/satoken/stp/StpUtil.java | 87 ++++++++++--- .../java/cn/dev33/satoken/util/SaFoxUtil.java | 2 +- .../com/pj/satoken/jwt/SaTokenJwtUtil.java | 8 +- .../java/com/pj/test/TestJwtController.java | 4 +- .../java/com/pj/satoken/StpInterfaceImpl.java | 4 +- .../main/java/com/pj/test/SSOController.java | 2 +- .../com/pj/test/StressTestController.java | 2 +- .../main/java/com/pj/test/TestController.java | 8 +- .../main/java/com/pj/test/UserController.java | 2 +- .../java/com/pj/satoken/StpInterfaceImpl.java | 4 +- .../main/java/com/pj/test/SSOController.java | 2 +- .../com/pj/test/StressTestController.java | 2 +- .../main/java/com/pj/test/TestController.java | 8 +- .../main/java/com/pj/test/UserController.java | 2 +- .../java/com/pj/satoken/StpInterfaceImpl.java | 4 +- .../main/java/com/pj/test/TestController.java | 2 +- sa-token-doc/doc/README.md | 6 +- sa-token-doc/doc/fun/token-info.md | 2 +- sa-token-doc/doc/more/common-action.md | 2 +- sa-token-doc/doc/more/common-questions.md | 4 +- sa-token-doc/doc/more/update-log.md | 6 +- sa-token-doc/doc/senior/sso.md | 2 +- sa-token-doc/doc/start/example.md | 2 +- sa-token-doc/doc/start/webflux-example.md | 2 +- sa-token-doc/doc/use/global-listener.md | 12 +- sa-token-doc/doc/use/jur-auth.md | 8 +- sa-token-doc/doc/use/login-auth.md | 4 +- sa-token-doc/doc/use/many-account.md | 20 +-- sa-token-doc/doc/use/mutex-login.md | 2 +- sa-token-doc/doc/use/not-cookie.md | 2 +- sa-token-doc/doc/use/remember-me.md | 10 +- sa-token-doc/doc/use/token-style.md | 8 +- .../cn/dev33/satoken/quick/SaQuickBean.java | 2 +- .../satoken/quick/web/SaQuickController.java | 2 +- .../pj/test/SaTokenSpringBootStarterTest.java | 26 ++-- .../com/pj/test/satoken/StpInterfaceImpl.java | 4 +- 55 files changed, 319 insertions(+), 265 deletions(-) diff --git a/README.md b/README.md index 57a39d9c..ff044f70 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Sa-Token的API调用非常简单,有多简单呢?以登录验证为例,你 ``` java // 在登录时写入当前会话的账号id -StpUtil.setLoginId(10001); +StpUtil.login(10001); // 然后在任意需要校验登录处调用以下API // 如果当前会话未登录,这句代码会抛出 `NotLoginException`异常 @@ -112,7 +112,7 @@ StpUtil.logoutByLoginId(10001); 除了以上的示例,Sa-Token还可以一行代码完成以下功能: ``` java -StpUtil.setLoginId(10001); // 标记当前会话登录的账号id +StpUtil.login(10001); // 标记当前会话登录的账号id StpUtil.getLoginId(); // 获取当前会话登录的账号id StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false StpUtil.logout(); // 当前会话注销登录 @@ -122,7 +122,7 @@ StpUtil.hasPermission("user:add"); // 查询当前账号是否含有指 StpUtil.getSession(); // 获取当前账号id的Session StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session StpUtil.getTokenValueByLoginId(10001); // 获取账号id为10001的token令牌值 -StpUtil.setLoginId(10001, "PC"); // 指定设备标识登录 +StpUtil.login(10001, "PC"); // 指定设备标识登录 StpUtil.logoutByLoginId(10001, "PC"); // 指定设备标识进行强制注销 (不同端不受影响) StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号 ``` diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java index a7b7e770..2ea7a1e2 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java @@ -39,7 +39,7 @@ public class SaManager { SaFoxUtil.printSaToken(); } // 调用一次StpUtil中的方法,保证其可以尽早的初始化 StpLogic - StpUtil.getLoginKey(); + StpUtil.getLoginType(); } public static SaTokenConfig getConfig() { if (config == null) { @@ -173,31 +173,31 @@ public class SaManager { * @param stpLogic StpLogic */ public static void putStpLogic(StpLogic stpLogic) { - stpLogicMap.put(stpLogic.getLoginKey(), stpLogic); + stpLogicMap.put(stpLogic.getLoginType(), stpLogic); } /** - * 根据 LoginKey 获取对应的StpLogic,如果不存在则抛出异常 - * @param loginKey 对应的LoginKey + * 根据 LoginType 获取对应的StpLogic,如果不存在则抛出异常 + * @param loginType 对应的账号类型 * @return 对应的StpLogic */ - public static StpLogic getStpLogic(String loginKey) { - // 如果key为空则返回框架内置的 - if(loginKey == null || loginKey.isEmpty()) { + public static StpLogic getStpLogic(String loginType) { + // 如果type为空则返回框架内置的 + if(loginType == null || loginType.isEmpty()) { return StpUtil.stpLogic; } // 从SaManager中获取 - StpLogic stpLogic = stpLogicMap.get(loginKey); + StpLogic stpLogic = stpLogicMap.get(loginType); if(stpLogic == null) { /* * 此时有两种情况会造成 StpLogic == null - * 1. LoginKey拼写错误,请改正 (建议使用常量) + * 1. loginType拼写错误,请改正 (建议使用常量) * 2. 自定义StpUtil尚未初始化(静态类中的属性至少一次调用后才会初始化),解决方法两种 * (1) 从main方法里调用一次 * (2) 在自定义StpUtil类加上类似 @Component 的注解让容器启动时扫描到自动初始化 */ - throw new SaTokenException("未能获取对应StpLogic,key="+ loginKey); + throw new SaTokenException("未能获取对应StpLogic,type="+ loginType); } // 返回 diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenAction.java b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenAction.java index 061d9e54..599e3224 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenAction.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenAction.java @@ -16,10 +16,10 @@ public interface SaTokenAction { /** * 根据一定的算法生成一个token * @param loginId 账号id - * @param loginKey 账号体系key + * @param loginType 账号类型 * @return 一个token */ - public String createToken(Object loginId, String loginKey); + public String createToken(Object loginId, String loginType); /** * 根据 SessionId 创建一个 Session diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java index 44c0f033..ceda0101 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java @@ -24,7 +24,7 @@ public class SaTokenActionDefaultImpl implements SaTokenAction { * 根据一定的算法生成一个token */ @Override - public String createToken(Object loginId, String loginKey) { + public String createToken(Object loginId, String loginType) { // 根据配置的tokenStyle生成不同风格的token String tokenStyle = SaManager.getConfig().getTokenStyle(); // uuid @@ -111,19 +111,19 @@ public class SaTokenActionDefaultImpl implements SaTokenAction { // 校验 @SaCheckLogin 注解 if(target.isAnnotationPresent(SaCheckLogin.class)) { SaCheckLogin at = target.getAnnotation(SaCheckLogin.class); - SaManager.getStpLogic(at.key()).checkByAnnotation(at); + SaManager.getStpLogic(at.type()).checkByAnnotation(at); } // 校验 @SaCheckRole 注解 if(target.isAnnotationPresent(SaCheckRole.class)) { SaCheckRole at = target.getAnnotation(SaCheckRole.class); - SaManager.getStpLogic(at.key()).checkByAnnotation(at); + SaManager.getStpLogic(at.type()).checkByAnnotation(at); } // 校验 @SaCheckPermission 注解 if(target.isAnnotationPresent(SaCheckPermission.class)) { SaCheckPermission at = target.getAnnotation(SaCheckPermission.class); - SaManager.getStpLogic(at.key()).checkByAnnotation(at); + SaManager.getStpLogic(at.type()).checkByAnnotation(at); } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckLogin.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckLogin.java index 161c7698..e974e934 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckLogin.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckLogin.java @@ -19,6 +19,6 @@ public @interface SaCheckLogin { * 多账号体系下所属的账号体系标识 * @return see note */ - String key() default ""; + String type() default ""; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java index d34fbd47..d9b18906 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java @@ -31,6 +31,6 @@ public @interface SaCheckPermission { * 多账号体系下所属的账号体系标识 * @return see note */ - String key() default ""; + String type() default ""; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckRole.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckRole.java index 8d5ba913..dc925783 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckRole.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckRole.java @@ -28,9 +28,10 @@ public @interface SaCheckRole { SaMode mode() default SaMode.AND; /** - * 多账号体系下所属的账号体系标识 + * 账号类型 + *
建议使用常量,避免因错误拼写带来的bug * @return see note */ - String key() default ""; + String type() default ""; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaMode.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaMode.java index a512cfb9..684bcce3 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaMode.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaMode.java @@ -8,12 +8,12 @@ package cn.dev33.satoken.annotation; public enum SaMode { /** - * 必须具有所有的选项 + * 必须具有所有的元素 */ AND, /** - * 只需具有其中一个选项 + * 只需具有其中一个元素 */ OR diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/DisableLoginException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/DisableLoginException.java index bee0c55f..741d05e8 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/DisableLoginException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/DisableLoginException.java @@ -19,9 +19,9 @@ public class DisableLoginException extends SaTokenException { public static final String BE_MESSAGE = "此账号已被封禁"; /** - * LoginKey + * 账号类型 */ - private String loginKey; + private String loginType; /** * 被封禁的账号id @@ -34,12 +34,12 @@ public class DisableLoginException extends SaTokenException { private long disableTime; /** - * 获得LoginKey + * 获取账号类型 * - * @return See above + * @return See Note */ - public String getLoginKey() { - return loginKey; + public String getLoginType() { + return loginType; } /** @@ -62,14 +62,14 @@ public class DisableLoginException extends SaTokenException { /** * 构造方法创建一个 * - * @param loginKey loginKey + * @param loginType 账号类型 * @param loginId 被封禁的账号id * @param disableTime 封禁剩余时间,单位:秒 */ - public DisableLoginException(String loginKey, Object loginId, long disableTime) { + public DisableLoginException(String loginType, Object loginId, long disableTime) { super(BE_MESSAGE); this.loginId = loginId; - this.loginKey = loginKey; + this.loginType = loginType; this.disableTime = disableTime; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java index 33b17ab5..5d50afdb 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java @@ -67,38 +67,38 @@ public class NotLoginException extends SaTokenException { /** - * loginKey + * 账号类型 */ - private String loginKey; + private String loginType; /** - * 获得loginKey - * @return loginKey + * 获得账号类型 + * @return 账号类型 */ - public String getLoginKey() { - return loginKey; + public String getLoginType() { + return loginType; } /** * 构造方法创建一个 * @param message 异常消息 - * @param loginKey loginKey + * @param loginType 账号类型 * @param type 类型 */ - public NotLoginException(String message, String loginKey, String type) { + public NotLoginException(String message, String loginType, String type) { super(message); - this.loginKey = loginKey; + this.loginType = loginType; this.type = type; } /** * 静态方法构建一个NotLoginException - * @param loginKey loginKey - * @param type 场景类型 + * @param loginType 账号类型 + * @param type 账号类型 * @return 构建完毕的异常对象 */ - public static NotLoginException newInstance(String loginKey, String type) { + public static NotLoginException newInstance(String loginType, String type) { String message = null; if(NOT_TOKEN.equals(type)) { message = NOT_TOKEN_MESSAGE; @@ -118,7 +118,7 @@ public class NotLoginException extends SaTokenException { else { message = DEFAULT_MESSAGE; } - return new NotLoginException(message, loginKey, type); + return new NotLoginException(message, loginType, type); } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotPermissionException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotPermissionException.java index d37f6124..cf3c5a5a 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotPermissionException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotPermissionException.java @@ -26,27 +26,27 @@ public class NotPermissionException extends SaTokenException { } /** - * loginKey + * 账号类型 */ - private String loginKey; + private String loginType; /** - * 获得loginKey + * 获得账号类型 * - * @return loginKey + * @return 账号类型 */ - public String getLoginKey() { - return loginKey; + public String getLoginType() { + return loginType; } public NotPermissionException(String code) { - this(code, StpUtil.stpLogic.loginKey); + this(code, StpUtil.stpLogic.loginType); } - public NotPermissionException(String code, String loginKey) { + public NotPermissionException(String code, String loginType) { super("无此权限:" + code); this.code = code; - this.loginKey = loginKey; + this.loginType = loginType; } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotRoleException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotRoleException.java index 448e037f..ea361c7f 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotRoleException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotRoleException.java @@ -26,27 +26,27 @@ public class NotRoleException extends SaTokenException { } /** - * loginKey + * 账号类型 */ - private String loginKey; + private String loginType; /** - * 获得loginKey + * 获得账号类型 * - * @return loginKey + * @return 账号类型 */ - public String getLoginKey() { - return loginKey; + public String getLoginType() { + return loginType; } public NotRoleException(String role) { - this(role, StpUtil.stpLogic.loginKey); + this(role, StpUtil.stpLogic.loginType); } - public NotRoleException(String role, String loginKey) { + public NotRoleException(String role, String loginType) { super("无此角色:" + role); this.role = role; - this.loginKey = loginKey; + this.loginType = loginType; } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java index f09b1ffa..099b395e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java @@ -12,52 +12,52 @@ public interface SaTokenListener { /** * 每次登录时触发 - * @param loginKey 账号类别 + * @param loginType 账号类别 * @param loginId 账号id * @param loginModel 登录参数 */ - public void doLogin(String loginKey, Object loginId, SaLoginModel loginModel); + public void doLogin(String loginType, Object loginId, SaLoginModel loginModel); /** * 每次注销时触发 - * @param loginKey 账号类别 + * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue token值 */ - public void doLogout(String loginKey, Object loginId, String tokenValue); + public void doLogout(String loginType, Object loginId, String tokenValue); /** * 每次被踢下线时触发 - * @param loginKey 账号类别 + * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue token值 * @param device 设备标识 */ - public void doLogoutByLoginId(String loginKey, Object loginId, String tokenValue, String device); + public void doLogoutByLoginId(String loginType, Object loginId, String tokenValue, String device); /** * 每次被顶下线时触发 - * @param loginKey 账号类别 + * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue token值 * @param device 设备标识 */ - public void doReplaced(String loginKey, Object loginId, String tokenValue, String device); + public void doReplaced(String loginType, Object loginId, String tokenValue, String device); /** * 每次被封禁时触发 - * @param loginKey 账号类别 + * @param loginType 账号类别 * @param loginId 账号id * @param disableTime 封禁时长,单位: 秒 */ - public void doDisable(String loginKey, Object loginId, long disableTime); + public void doDisable(String loginType, Object loginId, long disableTime); /** * 每次被解封时触发 - * @param loginKey 账号类别 + * @param loginType 账号类别 * @param loginId 账号id */ - public void doUntieDisable(String loginKey, Object loginId); + public void doUntieDisable(String loginType, Object loginId); /** * 每次创建Session时触发 diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerDefaultImpl.java index 6da708dd..c995b84c 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerDefaultImpl.java @@ -17,7 +17,7 @@ public class SaTokenListenerDefaultImpl implements SaTokenListener { * 每次登录时触发 */ @Override - public void doLogin(String loginKey, Object loginId, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, SaLoginModel loginModel) { println("账号[" + loginId + "]登录成功"); } @@ -25,7 +25,7 @@ public class SaTokenListenerDefaultImpl implements SaTokenListener { * 每次注销时触发 */ @Override - public void doLogout(String loginKey, Object loginId, String tokenValue) { + public void doLogout(String loginType, Object loginId, String tokenValue) { println("账号[" + loginId + "]注销成功"); } @@ -33,7 +33,7 @@ public class SaTokenListenerDefaultImpl implements SaTokenListener { * 每次被踢下线时触发 */ @Override - public void doLogoutByLoginId(String loginKey, Object loginId, String tokenValue, String device) { + public void doLogoutByLoginId(String loginType, Object loginId, String tokenValue, String device) { println("账号[" + loginId + "]被踢下线 (终端: " + device + ")"); } @@ -41,7 +41,7 @@ public class SaTokenListenerDefaultImpl implements SaTokenListener { * 每次被顶下线时触发 */ @Override - public void doReplaced(String loginKey, Object loginId, String tokenValue, String device) { + public void doReplaced(String loginType, Object loginId, String tokenValue, String device) { println("账号[" + loginId + "]被顶下线 (终端: " + device + ")"); } @@ -49,7 +49,7 @@ public class SaTokenListenerDefaultImpl implements SaTokenListener { * 每次被封禁时触发 */ @Override - public void doDisable(String loginKey, Object loginId, long disableTime) { + public void doDisable(String loginType, Object loginId, long disableTime) { Date date = new Date(System.currentTimeMillis() + disableTime * 1000); println("账号[" + loginId + "]被封禁 (解封时间: " + SaFoxUtil.formatDate(date) + ")"); } @@ -58,7 +58,7 @@ public class SaTokenListenerDefaultImpl implements SaTokenListener { * 每次被解封时触发 */ @Override - public void doUntieDisable(String loginKey, Object loginId) { + public void doUntieDisable(String loginType, Object loginId) { println("账号[" + loginId + "]被解除封禁"); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterUtil.java index 3c014650..dd1e4a1b 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterUtil.java @@ -10,8 +10,8 @@ import cn.dev33.satoken.fun.IsRunFunction; import cn.dev33.satoken.fun.SaFunction; /** + *
- * (stp = sa-token-permission 的缩写 )
+ * Sa-Token 权限验证,逻辑实现类
* @author kong
*/
public class StpLogic {
/**
- * 持久化的key前缀,多账号认证体系时以此值区分,比如:login、user、admin
+ * 账号类型,多账号体系时以此值区分,比如:login、user、admin
*/
- public String loginKey;
+ public String loginType;
/**
- * 初始化StpLogic, 并指定LoginKey
- * @param loginKey 账号体系标识
+ * 初始化StpLogic, 并指定账号类型
+ * @param loginType 账号体系标识
*/
- public StpLogic(String loginKey) {
- this.loginKey = loginKey;
- // 在 SaTokenManager 中记录下此 StpLogic,以便根据 LoginKey 进行查找此对象
+ public StpLogic(String loginType) {
+ this.loginType = loginType;
+ // 在 SaTokenManager 中记录下此 StpLogic,以便根据 LoginType 进行查找此对象
SaManager.putStpLogic(this);
}
/**
- * 获取当前StpLogin的LoginKey
- * @return 当前StpLogin的loginKey
+ * 获取当前 StpLogic 的账号类型
+ * @return See Note
*/
- public String getLoginKey(){
- return loginKey;
+ public String getLoginType(){
+ return loginType;
}
/**
- * 写入当前StpLogin的LoginKey
- * @param loginKey loginKey
+ * 设置当前账号类型
+ * @param loginType loginType
* @return 对象自身
*/
- public StpLogic setLoginKey(String loginKey){
- this.loginKey = loginKey;
+ public StpLogic setLoginType(String loginType){
+ this.loginType = loginType;
return this;
}
@@ -84,7 +82,7 @@ public class StpLogic {
* @return 生成的tokenValue
*/
public String createTokenValue(Object loginId) {
- return SaManager.getSaTokenAction().createToken(loginId, loginKey);
+ return SaManager.getSaTokenAction().createToken(loginId, loginType);
}
/**
@@ -166,7 +164,7 @@ public class StpLogic {
info.tokenValue = getTokenValue();
info.isLogin = isLogin();
info.loginId = getLoginIdDefaultNull();
- info.loginKey = getLoginKey();
+ info.loginType = getLoginType();
info.tokenTimeout = getTokenTimeout();
info.sessionTimeout = getSessionTimeout();
info.tokenSessionTimeout = getTokenSessionTimeout();
@@ -184,8 +182,8 @@ public class StpLogic {
* 在当前会话上登录id
* @param loginId 登录id,建议的类型:(long | int | String)
*/
- public void setLoginId(Object loginId) {
- setLoginId(loginId, new SaLoginModel());
+ public void login(Object loginId) {
+ login(loginId, new SaLoginModel());
}
/**
@@ -193,8 +191,8 @@ public class StpLogic {
* @param loginId 登录id,建议的类型:(long | int | String)
* @param device 设备标识
*/
- public void setLoginId(Object loginId, String device) {
- setLoginId(loginId, new SaLoginModel().setDevice(device));
+ public void login(Object loginId, String device) {
+ login(loginId, new SaLoginModel().setDevice(device));
}
/**
@@ -202,8 +200,8 @@ public class StpLogic {
* @param loginId 登录id,建议的类型:(long | int | String)
* @param isLastingCookie 是否为持久Cookie
*/
- public void setLoginId(Object loginId, boolean isLastingCookie) {
- setLoginId(loginId, new SaLoginModel().setIsLastingCookie(isLastingCookie));
+ public void login(Object loginId, boolean isLastingCookie) {
+ login(loginId, new SaLoginModel().setIsLastingCookie(isLastingCookie));
}
/**
@@ -211,11 +209,11 @@ public class StpLogic {
* @param loginId 登录id,建议的类型:(long | int | String)
* @param loginModel 此次登录的参数Model
*/
- public void setLoginId(Object loginId, SaLoginModel loginModel) {
+ public void login(Object loginId, SaLoginModel loginModel) {
// ------ 0、检查此账号是否已被封禁
if(isDisable(loginId)) {
- throw new DisableLoginException(loginKey, loginId, getDisableTime(loginId));
+ throw new DisableLoginException(loginType, loginId, getDisableTime(loginId));
}
// ------ 1、获取相应对象
@@ -246,7 +244,7 @@ public class StpLogic {
// 3. 清理user-session上的token签名记录
session.removeTokenSign(tokenSign.getValue());
// $$ 通知监听器
- SaManager.getSaTokenListener().doReplaced(loginKey, loginId, tokenSign.getValue(), tokenSign.getDevice());
+ SaManager.getSaTokenListener().doReplaced(loginType, loginId, tokenSign.getValue(), tokenSign.getDevice());
}
}
}
@@ -277,7 +275,7 @@ public class StpLogic {
setTokenValue(tokenValue, loginModel.getCookieTimeout());
// $$ 通知监听器
- SaManager.getSaTokenListener().doLogin(loginKey, loginId, loginModel);
+ SaManager.getSaTokenListener().doLogin(loginType, loginId, loginModel);
}
/**
@@ -315,7 +313,7 @@ public class StpLogic {
SaManager.getSaTokenDao().delete(splicingKeyTokenValue(tokenValue));
// $$ 通知监听器
- SaManager.getSaTokenListener().doLogout(loginKey, loginId, tokenValue);
+ SaManager.getSaTokenListener().doLogout(loginType, loginId, tokenValue);
// 4. 尝试清理User-Session上的token签名 (如果为null或已被标记为异常, 那么无需继续执行 )
SaSession session = getSessionByLoginId(loginId, false);
@@ -363,7 +361,7 @@ public class StpLogic {
// 4. 清理账号session上的token签名
session.removeTokenSign(tokenValue);
// $$ 通知监听器
- SaManager.getSaTokenListener().doLogoutByLoginId(loginKey, loginId, tokenValue, tokenSign.getDevice());
+ SaManager.getSaTokenListener().doLogoutByLoginId(loginType, loginId, tokenValue, tokenSign.getDevice());
}
}
// 3. 尝试注销session
@@ -381,7 +379,7 @@ public class StpLogic {
SaManager.getSaTokenDao().set(splicingKeyDisable(loginId), DisableLoginException.BE_VALUE, disableTime);
// $$ 通知监听器
- SaManager.getSaTokenListener().doDisable(loginKey, loginId, disableTime);
+ SaManager.getSaTokenListener().doDisable(loginType, loginId, disableTime);
}
/**
@@ -410,7 +408,7 @@ public class StpLogic {
SaManager.getSaTokenDao().delete(splicingKeyDisable(loginId));
// $$ 通知监听器
- SaManager.getSaTokenListener().doUntieDisable(loginKey, loginId);
+ SaManager.getSaTokenListener().doUntieDisable(loginType, loginId);
}
@@ -444,24 +442,24 @@ public class StpLogic {
// 如果获取不到token,则抛出: 无token
String tokenValue = getTokenValue();
if(tokenValue == null) {
- throw NotLoginException.newInstance(loginKey, NotLoginException.NOT_TOKEN);
+ throw NotLoginException.newInstance(loginType, NotLoginException.NOT_TOKEN);
}
// 查找此token对应loginId, 如果找不到则抛出:无效token
String loginId = getLoginIdNotHandle(tokenValue);
if(loginId == null) {
- throw NotLoginException.newInstance(loginKey, NotLoginException.INVALID_TOKEN);
+ throw NotLoginException.newInstance(loginType, NotLoginException.INVALID_TOKEN);
}
// 如果是已经过期,则抛出已经过期
if(loginId.equals(NotLoginException.TOKEN_TIMEOUT)) {
- throw NotLoginException.newInstance(loginKey, NotLoginException.TOKEN_TIMEOUT);
+ throw NotLoginException.newInstance(loginType, NotLoginException.TOKEN_TIMEOUT);
}
// 如果是已经被顶替下去了, 则抛出:已被顶下线
if(loginId.equals(NotLoginException.BE_REPLACED)) {
- throw NotLoginException.newInstance(loginKey, NotLoginException.BE_REPLACED);
+ throw NotLoginException.newInstance(loginType, NotLoginException.BE_REPLACED);
}
// 如果是已经被踢下线了, 则抛出:已被踢下线
if(loginId.equals(NotLoginException.KICK_OUT)) {
- throw NotLoginException.newInstance(loginKey, NotLoginException.KICK_OUT);
+ throw NotLoginException.newInstance(loginType, NotLoginException.KICK_OUT);
}
// 检查是否已经 [临时过期]
checkActivityTimeout(tokenValue);
@@ -744,7 +742,7 @@ public class StpLogic {
}
// -2 代表已过期,抛出异常
if(timeout == SaTokenDao.NOT_VALUE_EXPIRE) {
- throw NotLoginException.newInstance(loginKey, NotLoginException.TOKEN_TIMEOUT);
+ throw NotLoginException.newInstance(loginType, NotLoginException.TOKEN_TIMEOUT);
}
// --- 至此,验证已通过
@@ -885,7 +883,7 @@ public class StpLogic {
* @return 是否含有指定角色标识
*/
public boolean hasRole(Object loginId, String role) {
- List 本函数设计已过时,未来版本可能移除此函数,请及时更换为 StpUtil.getLoginType() ,使用方式保持不变
+ * 获取当前StpLogin的loginKey
+ * @return 当前StpLogin的loginKey
+ */
+ @Deprecated
+ public static String getLoginKey(){
+ return stpLogic.getLoginType();
+ }
+
+ /**
+ * 本函数设计已过时,未来版本可能移除此函数,请及时更换为 StpUtil.login() ,使用方式保持不变
+ * 在当前会话上登录id
+ * @param loginId 登录id,建议的类型:(long | int | String)
+ */
+ @Deprecated
+ public static void setLoginId(Object loginId) {
+ stpLogic.login(loginId);
+ }
+
+ /**
+ * 本函数设计已过时,未来版本可能移除此函数,请及时更换为 StpUtil.login() ,使用方式保持不变
+ * 在当前会话上登录id, 并指定登录设备
+ * @param loginId 登录id,建议的类型:(long | int | String)
+ * @param device 设备标识
+ */
+ @Deprecated
+ public static void setLoginId(Object loginId, String device) {
+ stpLogic.login(loginId, device);
+ }
+
+ /**
+ * 本函数设计已过时,未来版本可能移除此函数,请及时更换为 StpUtil.login() ,使用方式保持不变
+ * 在当前会话上登录id, 并指定登录设备
+ * @param loginId 登录id,建议的类型:(long | int | String)
+ * @param isLastingCookie 是否为持久Cookie
+ */
+ @Deprecated
+ public static void setLoginId(Object loginId, boolean isLastingCookie) {
+ stpLogic.login(loginId, isLastingCookie);
+ }
+
+ /**
+ * 本函数设计已过时,未来版本可能移除此函数,请及时更换为 StpUtil.login() ,使用方式保持不变
+ * 在当前会话上登录id, 并指定所有登录参数Model
+ * @param loginId 登录id,建议的类型:(long | int | String)
+ * @param loginModel 此次登录的参数Model
+ */
+ @Deprecated
+ public static void setLoginId(Object loginId, SaLoginModel loginModel) {
+ stpLogic.login(loginId, loginModel);
+ }
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java
index 73e2440d..312afcc0 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java
@@ -67,7 +67,7 @@ public class SaFoxUtil {
}
/**
- * 将日期格式化
+ * 将日期格式化 (yyyy-MM-dd HH:mm:ss)
* @param date 日期
* @return 格式化后的时间
*/
diff --git a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/jwt/SaTokenJwtUtil.java b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/jwt/SaTokenJwtUtil.java
index 29ee869f..97fbe14d 100644
--- a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/jwt/SaTokenJwtUtil.java
+++ b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/jwt/SaTokenJwtUtil.java
@@ -90,10 +90,10 @@ public class SaTokenJwtUtil {
}
return String.valueOf(loginId);
} catch (ExpiredJwtException e) {
-// throw NotLoginException.newInstance(StpUtil.stpLogic.loginKey, NotLoginException.TOKEN_TIMEOUT);
+// throw NotLoginException.newInstance(StpUtil.TYPE, NotLoginException.TOKEN_TIMEOUT);
return NotLoginException.TOKEN_TIMEOUT;
} catch (MalformedJwtException e) {
- throw NotLoginException.newInstance(StpUtil.stpLogic.loginKey, NotLoginException.INVALID_TOKEN);
+ throw NotLoginException.newInstance(StpUtil.stpLogic.loginType, NotLoginException.INVALID_TOKEN);
} catch (Exception e) {
throw new SaTokenException(e);
}
@@ -122,7 +122,7 @@ public class SaTokenJwtUtil {
// 重写 (在当前会话上登录id )
@Override
- public void setLoginId(Object loginId, SaLoginModel loginModel) {
+ public void login(Object loginId, SaLoginModel loginModel) {
// ------ 1、获取相应对象
SaStorage storage = SaManager.getSaTokenContext().getStorage();
SaTokenConfig config = getConfig();
@@ -203,7 +203,7 @@ public class SaTokenJwtUtil {
info.tokenValue = getTokenValue();
info.isLogin = isLogin();
info.loginId = getLoginIdDefaultNull();
- info.loginKey = getLoginKey();
+ info.loginType = getLoginType();
info.tokenTimeout = getTokenTimeout();
// info.sessionTimeout = getSessionTimeout();
// info.tokenSessionTimeout = getTokenSessionTimeout();
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 e2f1995a..d11014b5 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
@@ -32,7 +32,7 @@ public class TestJwtController {
System.out.println("当前是否登录:" + StpUtil.isLogin());
System.out.println("当前登录账号:" + StpUtil.getLoginIdDefaultNull());
- StpUtil.setLoginId(id); // 在当前会话登录此账号
+ StpUtil.login(id); // 在当前会话登录此账号
System.out.println("登录成功");
System.out.println("当前是否登录:" + StpUtil.isLogin());
System.out.println("当前登录账号:" + StpUtil.getLoginId());
@@ -73,7 +73,7 @@ public class TestJwtController {
public AjaxJson test() {
System.out.println();
System.out.println("--------------进入请求--------------");
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
System.out.println(StpUtil.getTokenInfo().getTokenValue());
return AjaxJson.getSuccess();
}
diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/StpInterfaceImpl.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/StpInterfaceImpl.java
index 35798046..5833b67d 100644
--- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/StpInterfaceImpl.java
+++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/StpInterfaceImpl.java
@@ -17,7 +17,7 @@ public class StpInterfaceImpl implements StpInterface {
* 返回一个账号所拥有的权限码集合
*/
@Override
- public List
+扩展:`NotLoginException` 对象可通过 `getLoginType()` 方法获取具体是哪个 `StpLogic` 抛出的异常
扩展:`NotLoginException` 对象可通过 `getType()` 方法获取具体的场景值,详细参考章节:[未登录场景值](/fun/not-login-scene)
diff --git a/sa-token-doc/doc/use/many-account.md b/sa-token-doc/doc/use/many-account.md
index db017011..7dfebed8 100644
--- a/sa-token-doc/doc/use/many-account.md
+++ b/sa-token-doc/doc/use/many-account.md
@@ -17,7 +17,7 @@
这样做有两个优点:
- `StpLogic`类的所有函数都可以被重写,按需扩展
-- 在构造方法时随意传入一个不同的 `loginKey`,就可以再造一套账号登录体系
+- 在构造方法时随意传入一个不同的 `loginType`,就可以再造一套账号登录体系
### 操作示例
@@ -25,7 +25,7 @@
比如说,对于原生`StpUtil`类,我们只做`admin账号`权限验证,而对于`user账号`,我们则:
1. 新建一个新的权限验证类,比如: `StpUserUtil.java`
2. 将`StpUtil.java`类的全部代码复制粘贴到 `StpUserUtil.java`里
-3. 更改一下其 `LoginKey`, 比如:
+3. 更改一下其 `LoginType`, 比如:
``` java
public class StpUserUtil {
@@ -33,7 +33,7 @@ public class StpUserUtil {
/**
* 账号体系标识
*/
- public static final String KEY = "user"; // 将 LoginKey 从`login`改为`user`
+ public static final String KEY = "user"; // 将 LoginType 从`login`改为`user`
// 其它代码 ...
@@ -47,21 +47,21 @@ public class StpUserUtil {
### 在多账号模式下使用注解鉴权
框架默认的注解鉴权 如`@SaCheckLogin` 只针对原生`StpUtil`进行鉴权
-例如,我们在一个方法上加上`@SaCheckLogin`注解,这个注解只会放行通过`StpUtil.setLoginId(id)`进行登录的会话,
-而对于通过`StpUserUtil.setLoginId(id)`进行登录的都会话,则始终不会通过校验
+例如,我们在一个方法上加上`@SaCheckLogin`注解,这个注解只会放行通过`StpUtil.login(id)`进行登录的会话,
+而对于通过`StpUserUtil.login(id)`进行登录的都会话,则始终不会通过校验
-那么如何告诉`@SaCheckLogin`要鉴别的是哪套账号的登录会话呢?很简单,你只需要指定一下注解的key属性即可:
+那么如何告诉`@SaCheckLogin`要鉴别的是哪套账号的登录会话呢?很简单,你只需要指定一下注解的type属性即可:
``` java
-// 通过key属性指定此注解校验的是我们自定义的`StpUserUtil`,而不是原生`StpUtil`
-@SaCheckLogin(key = StpUserUtil.KEY)
+// 通过type属性指定此注解校验的是我们自定义的`StpUserUtil`,而不是原生`StpUtil`
+@SaCheckLogin(type = StpUserUtil.TYPE)
@RequestMapping("info")
public String info() {
return "查询用户信息";
}
```
-注:`@SaCheckRole("xxx")`、`@SaCheckPermission("xxx")`同理,亦可根据key属性指定其校验的账号体系,此属性默认为`""`,代表使用原生`StpUtil`账号体系
+注:`@SaCheckRole("xxx")`、`@SaCheckPermission("xxx")`同理,亦可根据type属性指定其校验的账号体系,此属性默认为`""`,代表使用原生`StpUtil`账号体系
@@ -86,7 +86,7 @@ public static StpLogic stpLogic = new StpLogic("user") {
};
```
-再次调用 `StpUserUtil.setLoginId(10001)` 进行登录授权时,token的名称将不再是 `satoken`,而是我们重写后的 `satoken-user`
+再次调用 `StpUserUtil.login(10001)` 进行登录授权时,token的名称将不再是 `satoken`,而是我们重写后的 `satoken-user`
diff --git a/sa-token-doc/doc/use/mutex-login.md b/sa-token-doc/doc/use/mutex-login.md
index a23439ad..472a822b 100644
--- a/sa-token-doc/doc/use/mutex-login.md
+++ b/sa-token-doc/doc/use/mutex-login.md
@@ -14,7 +14,7 @@
#### 指定设备标识登录
``` java
// 指定`账号id`和`设备标识`进行登录
-StpUtil.setLoginId(10001, "PC");
+StpUtil.login(10001, "PC");
```
调用此方法登录后,同设备的会被顶下线(不同设备不受影响),再次访问系统时会抛出 `NotLoginException` 异常,场景值=`-4`
diff --git a/sa-token-doc/doc/use/not-cookie.md b/sa-token-doc/doc/use/not-cookie.md
index 85a628c2..e8d287ff 100644
--- a/sa-token-doc/doc/use/not-cookie.md
+++ b/sa-token-doc/doc/use/not-cookie.md
@@ -20,7 +20,7 @@
### 1、后端将 token 返回到前端
-1. 首先调用 `StpUtil.setLoginId(Object loginId)` 进行登录
+1. 首先调用 `StpUtil.login(Object loginId)` 进行登录
2. 调用 `StpUtil.getTokenInfo()` 返回当前会话的token详细参数
- 此方法返回一个对象,其有两个关键属性:`tokenName`和`tokenValue`(`token`的名称和`token`的值)
- 将此对象传递到前台,让前端人员将这两个值保存到本地
diff --git a/sa-token-doc/doc/use/remember-me.md b/sa-token-doc/doc/use/remember-me.md
index 980efa91..f7392c08 100644
--- a/sa-token-doc/doc/use/remember-me.md
+++ b/sa-token-doc/doc/use/remember-me.md
@@ -14,7 +14,7 @@ sa-token的登录授权,**默认就是`[记住我]`模式**,为了实现`[
``` java
// 设置登录账号id为10001,第二个参数指定是否为[记住我],当此值为false后,关闭浏览器后再次打开需要重新登录
-StpUtil.setLoginId(10001, false);
+StpUtil.login(10001, false);
```
那么,sa-token实现`[记住我]`的具体原理是?
@@ -26,8 +26,8 @@ Cookie作为浏览器提供的默认会话跟踪机制,其生命周期有两
- 永久Cookie:有效期为一个具体的时间,在时间未到期之前,即使用户关闭了浏览器Cookie也不会消失
利用Cookie的此特性,我们便可以轻松实现 [记住我] 模式:
-- 勾选[记住我]按钮时:调用`StpUtil.setLoginId(10001, true)`,在浏览器写入一个`永久Cookie`储存token,此时用户即使重启浏览器token依然有效
-- 不勾选[记住我]按钮时:调用`StpUtil.setLoginId(10001, false)`,在浏览器写入一个`临时Cookie`储存token,此时用户在重启浏览器后token便会消失,导致会话失效
+- 勾选[记住我]按钮时:调用`StpUtil.login(10001, true)`,在浏览器写入一个`永久Cookie`储存token,此时用户即使重启浏览器token依然有效
+- 不勾选[记住我]按钮时:调用`StpUtil.login(10001, false)`,在浏览器写入一个`临时Cookie`储存token,此时用户在重启浏览器后token便会消失,导致会话失效
### 前后台分离模式下如何实现[记住我]?
@@ -64,11 +64,11 @@ Remember me, it's too easy!
``` java
// 示例1:
// 指定token有效期(单位: 秒),如下所示token七天有效
-StpUtil.setLoginId(10001, new SaLoginModel().setTimeout(60 * 60 * 24 * 7));
+StpUtil.login(10001, new SaLoginModel().setTimeout(60 * 60 * 24 * 7));
// ----------------------- 示例2:所有参数
// `SaLoginModel`为登录参数Model,其有诸多参数决定登录时的各种逻辑,例如:
-StpUtil.setLoginId(10001, new SaLoginModel()
+StpUtil.login(10001, new SaLoginModel()
.setDevice("PC") // 此次登录的客户端设备标识, 用于[同端互斥登录]时指定此次登录的设备名称
.setIsLastingCookie(true) // 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在)
.setTimeout(60 * 60 * 24 * 7) // 指定此次登录token的有效期, 单位:秒 (如未指定,自动取全局配置的timeout值)
diff --git a/sa-token-doc/doc/use/token-style.md b/sa-token-doc/doc/use/token-style.md
index 46bb538d..95b64c0e 100644
--- a/sa-token-doc/doc/use/token-style.md
+++ b/sa-token-doc/doc/use/token-style.md
@@ -55,13 +55,13 @@ import cn.dev33.satoken.action.SaTokenActionDefaultImpl;
public class MySaTokenAction extends SaTokenActionDefaultImpl {
// 重写token生成策略
@Override
- public String createToken(Object loginId, String loginKey) {
+ public String createToken(Object loginId, String loginType) {
return SaTokenInsideUtil.getRandomString(60); // 随机60位字符串
}
}
```
-2、再次调用 `StpUtil.setLoginId(10001)`方法进行登录,观察其生成的token样式:
+2、再次调用 `StpUtil.login(10001)`方法进行登录,观察其生成的token样式:
``` html
gfuPSwZsnUhwgz08GTCH4wOgasWtc3odP4HLwXJ7NDGOximTvT4OlW19zeLH
```
@@ -96,13 +96,13 @@ import cn.hutool.core.util.IdUtil;
public class MySaTokenAction extends SaTokenActionDefaultImpl {
// 重写token生成策略
@Override
- public String createToken(Object loginId, String loginKey) {
+ public String createToken(Object loginId, String loginType) {
return IdUtil.getSnowflake(1, 1).nextIdStr(); // 以雪花算法生成token
}
}
```
-3、再次调用 `StpUtil.setLoginId(10001)`方法进行登录,观察其生成的token样式:
+3、再次调用 `StpUtil.login(10001)`方法进行登录,观察其生成的token样式:
``` html
1339604338175250432
```
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickBean.java b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickBean.java
index d9d5395e..26635bec 100644
--- a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickBean.java
+++ b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickBean.java
@@ -77,7 +77,7 @@ public class SaQuickBean implements WebMvcConfigurer {
e.printStackTrace();
}
// 抛出异常,不再继续执行
- throw NotLoginException.newInstance(StpUtil.getLoginKey(), "");
+ throw NotLoginException.newInstance(StpUtil.getLoginType(), "");
}
}).
diff --git a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/web/SaQuickController.java b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/web/SaQuickController.java
index bff157e5..ffb42dc9 100644
--- a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/web/SaQuickController.java
+++ b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/web/SaQuickController.java
@@ -53,7 +53,7 @@ public class SaQuickController {
// 密码校验
SaQuickConfig config = SaQuickManager.getConfig();
if(name.equals(config.getName()) && pwd.equals(config.getPwd())) {
- StpUtil.setLoginId(config.getName());
+ StpUtil.login(config.getName());
return getResult(200, "ok", StpUtil.getTokenInfo());
} else {
// 校验失败
diff --git a/sa-token-starter/sa-token-spring-boot-starter/src/test/java/com/pj/test/SaTokenSpringBootStarterTest.java b/sa-token-starter/sa-token-spring-boot-starter/src/test/java/com/pj/test/SaTokenSpringBootStarterTest.java
index 3f7a0afd..5440bb68 100644
--- a/sa-token-starter/sa-token-spring-boot-starter/src/test/java/com/pj/test/SaTokenSpringBootStarterTest.java
+++ b/sa-token-starter/sa-token-spring-boot-starter/src/test/java/com/pj/test/SaTokenSpringBootStarterTest.java
@@ -43,7 +43,7 @@ public class SaTokenSpringBootStarterTest {
@Test
public void testDoLogin() {
// 登录
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
Assert.assertTrue(StpUtil.isLogin());
Assert.assertNotNull(StpUtil.getTokenValue()); // token不为null
Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001
@@ -59,7 +59,7 @@ public class SaTokenSpringBootStarterTest {
// 测试:权限认证
@Test
public void testCheckPermission() {
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
// 权限认证
Assert.assertTrue(StpUtil.hasPermission("user-add"));
@@ -72,7 +72,7 @@ public class SaTokenSpringBootStarterTest {
// 测试:角色认证
@Test
public void testCheckRole() {
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
// 角色认证
Assert.assertTrue(StpUtil.hasRole("admin"));
@@ -84,13 +84,13 @@ public class SaTokenSpringBootStarterTest {
public void testKickOut() {
// 根据token踢人
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
Assert.assertTrue(StpUtil.isLogin());
StpUtil.logoutByTokenValue(StpUtil.getTokenValue());
Assert.assertFalse(StpUtil.isLogin());
// 根据账号id踢人
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
Assert.assertTrue(StpUtil.isLogin());
StpUtil.logoutByLoginId(10001);
Assert.assertFalse(StpUtil.isLogin());
@@ -110,13 +110,13 @@ public class SaTokenSpringBootStarterTest {
// 封号后登陆 (会抛出 DisableLoginException 异常)
StpUtil.disable(10007, 200);
- StpUtil.setLoginId(10007);
+ StpUtil.login(10007);
}
// 测试:Session会话
@Test
public void testSession() {
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
// Session 应该存在
Assert.assertNotNull(StpUtil.getSession(false));
@@ -138,7 +138,7 @@ public class SaTokenSpringBootStarterTest {
@Test
public void testSwitch() {
// 登录
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
Assert.assertFalse(StpUtil.isSwitch());
Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001);
@@ -157,11 +157,11 @@ public class SaTokenSpringBootStarterTest {
@Test
public void testSearchTokenValue() {
// 登录
- StpUtil.setLoginId(10001);
- StpUtil.setLoginId(10002);
- StpUtil.setLoginId(10003);
- StpUtil.setLoginId(10004);
- StpUtil.setLoginId(10005);
+ StpUtil.login(10001);
+ StpUtil.login(10002);
+ StpUtil.login(10003);
+ StpUtil.login(10004);
+ StpUtil.login(10005);
// 查询
List