diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java index 53c18dd8..0caca54e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java @@ -22,7 +22,7 @@ import cn.dev33.satoken.annotation.handler.SaAnnotationHandlerInterface; import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.error.SaErrorCode; import cn.dev33.satoken.exception.SaTokenException; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.StpLogic; /** @@ -149,11 +149,11 @@ public class SaTokenEventCenter { * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue 本次登录产生的 token 值 - * @param loginModel 登录参数 + * @param loginParameter 登录参数 */ - public static void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { + public static void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter) { for (SaTokenListener listener : listenerList) { - listener.doLogin(loginType, loginId, tokenValue, loginModel); + listener.doLogin(loginType, loginId, tokenValue, loginParameter); } } 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 1d867f2c..289b7d46 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 @@ -17,7 +17,7 @@ package cn.dev33.satoken.listener; import cn.dev33.satoken.annotation.handler.SaAnnotationHandlerInterface; import cn.dev33.satoken.config.SaTokenConfig; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.StpLogic; /** @@ -35,9 +35,9 @@ public interface SaTokenListener { * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue 本次登录产生的 token 值 - * @param loginModel 登录参数 + * @param loginParameter 登录参数 */ - void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel); + void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter); /** * 每次注销时触发 diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForLog.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForLog.java index c1b61118..76c888d8 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForLog.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForLog.java @@ -17,7 +17,7 @@ package cn.dev33.satoken.listener; import cn.dev33.satoken.annotation.handler.SaAnnotationHandlerInterface; import cn.dev33.satoken.config.SaTokenConfig; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.util.SaFoxUtil; @@ -35,7 +35,7 @@ public class SaTokenListenerForLog implements SaTokenListener { * 每次登录时触发 */ @Override - public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter) { log.info("账号 {} 登录成功 (loginType={}), 会话凭证 token={}", loginId, loginType, tokenValue); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java index 4f3042b9..0bce1d3f 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java @@ -15,7 +15,7 @@ */ package cn.dev33.satoken.listener; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; /** * Sa-Token 侦听器,默认空实现 @@ -28,7 +28,7 @@ import cn.dev33.satoken.stp.SaLoginModel; public class SaTokenListenerForSimple implements SaTokenListener { @Override - public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter) { } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginConfig.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginConfig.java index 26353970..66993a6e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginConfig.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginConfig.java @@ -15,22 +15,27 @@ */ package cn.dev33.satoken.stp; +import cn.dev33.satoken.SaManager; + import java.util.Map; /** - * 快速、简洁的构建:调用 `StpUtil.login()` 时的 [ 配置参数 SaLoginModel ] + *

请更换为 new SaLoginParameter()

+ * + * 快速、简洁的构建:调用 `StpUtil.login()` 时的 [ 配置参数 SaLoginParameter ] * *
  *     	// 例如:在登录时指定 token 有效期为七天,代码如下:
  *     	StpUtil.login(10001, SaLoginConfig.setTimeout(60 * 60 * 24 * 7));
  *
  *     	// 上面的代码与下面的代码等价
- *     	StpUtil.login(10001, new SaLoginModel().setTimeout(60 * 60 * 24 * 7));
+ *     	StpUtil.login(10001, new SaLoginParameter().setTimeout(60 * 60 * 24 * 7));
  * 
* * @author click33 * @since 1.29.0 */ +@Deprecated public class SaLoginConfig { private SaLoginConfig() { @@ -40,7 +45,7 @@ public class SaLoginConfig { * @param device 此次登录的客户端设备类型 * @return 登录参数 Model */ - public static SaLoginModel setDevice(String device) { + public static SaLoginParameter setDevice(String device) { return create().setDevice(device); } @@ -48,7 +53,7 @@ public class SaLoginConfig { * @param isLastingCookie 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) * @return 登录参数 Model */ - public static SaLoginModel setIsLastingCookie(Boolean isLastingCookie) { + public static SaLoginParameter setIsLastingCookie(Boolean isLastingCookie) { return create().setIsLastingCookie(isLastingCookie); } @@ -56,7 +61,7 @@ public class SaLoginConfig { * @param timeout 指定此次登录token的有效期, 单位:秒 (如未指定,自动取全局配置的timeout值) * @return 登录参数 Model */ - public static SaLoginModel setTimeout(long timeout) { + public static SaLoginParameter setTimeout(long timeout) { return create().setTimeout(timeout); } @@ -64,7 +69,7 @@ public class SaLoginConfig { * @param activeTimeout 指定此次登录 token 最低活跃频率,单位:秒(如未指定,自动取全局配置的 activeTimeout 值) * @return 对象自身 */ - public static SaLoginModel setActiveTimeout(long activeTimeout) { + public static SaLoginParameter setActiveTimeout(long activeTimeout) { return create().setActiveTimeout(activeTimeout); } @@ -72,7 +77,7 @@ public class SaLoginConfig { * @param extraData 扩展信息(只在jwt模式下生效) * @return 登录参数 Model */ - public static SaLoginModel setExtraData(Map extraData) { + public static SaLoginParameter setExtraData(Map extraData) { return create().setExtraData(extraData); } @@ -80,7 +85,7 @@ public class SaLoginConfig { * @param token 预定Token(预定本次登录生成的Token值) * @return 登录参数 Model */ - public static SaLoginModel setToken(String token) { + public static SaLoginParameter setToken(String token) { return create().setToken(token); } @@ -90,7 +95,7 @@ public class SaLoginConfig { * @param value 值 * @return 登录参数 Model */ - public static SaLoginModel setExtra(String key, Object value) { + public static SaLoginParameter setExtra(String key, Object value) { return create().setExtra(key, value); } @@ -98,7 +103,7 @@ public class SaLoginConfig { * @param isWriteHeader 是否在登录后将 Token 写入到响应头 * @return 登录参数 Model */ - public static SaLoginModel setIsWriteHeader(Boolean isWriteHeader) { + public static SaLoginParameter setIsWriteHeader(Boolean isWriteHeader) { return create().setIsWriteHeader(isWriteHeader); } @@ -108,16 +113,16 @@ public class SaLoginConfig { * @param tokenSignTag / * @return 登录参数 Model */ - public static SaLoginModel setTokenSignTag(Object tokenSignTag) { + public static SaLoginParameter setTokenSignTag(Object tokenSignTag) { return create().setTokenSignTag(tokenSignTag); } /** - * 静态方法获取一个 SaLoginModel 对象 - * @return SaLoginModel 对象 + * 静态方法获取一个 SaLoginParameter 对象 + * @return SaLoginParameter 对象 */ - public static SaLoginModel create() { - return new SaLoginModel(); + public static SaLoginParameter create() { + return new SaLoginParameter(SaManager.getConfig()); } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginModel.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginParameter.java similarity index 80% rename from sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginModel.java rename to sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginParameter.java index e12e5976..8d124646 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginModel.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginParameter.java @@ -28,13 +28,18 @@ import java.util.Map; * *
  *     	// 例如:在登录时指定 token 有效期为七天,代码如下:
- *     	StpUtil.login(10001, new SaLoginModel().setTimeout(60 * 60 * 24 * 7));
+ *     	StpUtil.login(10001, new SaLoginParameter().setTimeout(60 * 60 * 24 * 7));
  * 
* * @author click33 * @since 1.13.2 */ -public class SaLoginModel { +public class SaLoginParameter { + +// /** +// * 该对象是否已构造完毕 +// */ +// public boolean isBuild = false; // --------- 单独参数 @@ -82,7 +87,30 @@ public class SaLoginModel { private Boolean isWriteHeader; - // ------ 附加方法 + // ------ 附加方法 + + public SaLoginParameter() { + this(SaManager.getConfig()); + } + public SaLoginParameter(SaTokenConfig config) { + setDefaultValues(config); + } + + /** + * 根据 SaTokenConfig 对象初始化默认值 + * + * @param config 使用的配置对象 + * @return 对象自身 + */ + public SaLoginParameter setDefaultValues(SaTokenConfig config) { + this.device = SaTokenConsts.DEFAULT_LOGIN_DEVICE; + this.isLastingCookie = config.getIsLastingCookie(); + this.timeout = config.getTimeout(); + this.isWriteHeader = config.getIsWriteHeader(); + return this; + } + + /** * 写入扩展数据(只在jwt模式下生效) @@ -90,7 +118,7 @@ public class SaLoginModel { * @param value 值 * @return 对象自身 */ - public SaLoginModel setExtra(String key, Object value) { + public SaLoginParameter setExtra(String key, Object value) { if(this.extraData == null) { this.extraData = new LinkedHashMap<>(); } @@ -119,7 +147,8 @@ public class SaLoginModel { } /** - * @return Cookie时长 + * 计算 Cookie 时长 + * @return / */ public int getCookieTimeout() { if( ! getIsLastingCookie()) { @@ -143,40 +172,11 @@ public class SaLoginModel { } /** - * 构建对象,初始化默认值 - * @return 对象自身 + * 静态方法获取一个 SaLoginParameter 对象 + * @return SaLoginParameter 对象 */ - public SaLoginModel build() { - return build(SaManager.getConfig()); - } - - /** - * 构建对象,初始化默认值 - * @param config 配置对象 - * @return 对象自身 - */ - public SaLoginModel build(SaTokenConfig config) { -// if(device == null) { -// device = SaTokenConsts.DEFAULT_LOGIN_DEVICE; -// } - if(isLastingCookie == null) { - isLastingCookie = config.getIsLastingCookie(); - } - if(timeout == null) { - timeout = config.getTimeout(); - } - if(isWriteHeader == null) { - isWriteHeader = config.getIsWriteHeader(); - } - return this; - } - - /** - * 静态方法获取一个 SaLoginModel 对象 - * @return SaLoginModel 对象 - */ - public static SaLoginModel create() { - return new SaLoginModel(); + public static SaLoginParameter create() { + return new SaLoginParameter(SaManager.getConfig()); } @@ -196,7 +196,7 @@ public class SaLoginModel { * @param device 此次登录的客户端设备类型 * @return 对象自身 */ - public SaLoginModel setDevice(String device) { + public SaLoginParameter setDevice(String device) { this.device = device; return this; } @@ -212,7 +212,7 @@ public class SaLoginModel { * @param isLastingCookie 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) * @return 对象自身 */ - public SaLoginModel setIsLastingCookie(Boolean isLastingCookie) { + public SaLoginParameter setIsLastingCookie(Boolean isLastingCookie) { this.isLastingCookie = isLastingCookie; return this; } @@ -228,7 +228,7 @@ public class SaLoginModel { * @param timeout 指定此次登录 token 有效期,单位:秒 (如未指定,自动取全局配置的 timeout 值) * @return 对象自身 */ - public SaLoginModel setTimeout(long timeout) { + public SaLoginParameter setTimeout(long timeout) { this.timeout = timeout; return this; } @@ -245,7 +245,7 @@ public class SaLoginModel { * @param activeTimeout 指定此次登录 token 最低活跃频率,单位:秒(如未指定,则使用全局配置的 activeTimeout 值) * @return 对象自身 */ - public SaLoginModel setActiveTimeout(long activeTimeout) { + public SaLoginParameter setActiveTimeout(long activeTimeout) { this.activeTimeout = activeTimeout; return this; } @@ -261,7 +261,7 @@ public class SaLoginModel { * @param extraData 扩展信息(只在jwt模式下生效) * @return 对象自身 */ - public SaLoginModel setExtraData(Map extraData) { + public SaLoginParameter setExtraData(Map extraData) { this.extraData = extraData; return this; } @@ -277,7 +277,7 @@ public class SaLoginModel { * @param token 预定Token(预定本次登录生成的Token值) * @return 对象自身 */ - public SaLoginModel setToken(String token) { + public SaLoginParameter setToken(String token) { this.token = token; return this; } @@ -293,7 +293,7 @@ public class SaLoginModel { * @param isWriteHeader 是否在登录后将 Token 写入到响应头 * @return 对象自身 */ - public SaLoginModel setIsWriteHeader(Boolean isWriteHeader) { + public SaLoginParameter setIsWriteHeader(Boolean isWriteHeader) { this.isWriteHeader = isWriteHeader; return this; } @@ -313,7 +313,7 @@ public class SaLoginModel { * @param tokenSignTag 本次登录挂载到 TokenSign 的数据 * @return 对象自身 */ - public SaLoginModel setTokenSignTag(Object tokenSignTag) { + public SaLoginParameter setTokenSignTag(Object tokenSignTag) { this.tokenSignTag = tokenSignTag; return this; } @@ -323,7 +323,7 @@ public class SaLoginModel { */ @Override public String toString() { - return "SaLoginModel [" + return "SaLoginParameter [" + "device=" + device + ", isLastingCookie=" + isLastingCookie + ", timeout=" + timeout 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 a4a2f768..24b8ea9a 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 @@ -169,7 +169,7 @@ public class StpLogic { * @param tokenValue token 值 */ public void setTokenValue(String tokenValue){ - setTokenValue(tokenValue, new SaLoginModel().setTimeout(getConfigOrGlobal().getTimeout())); + setTokenValue(tokenValue, createSaLoginParameter().setTimeout(getConfigOrGlobal().getTimeout())); } /** @@ -179,35 +179,32 @@ public class StpLogic { * @param cookieTimeout Cookie存活时间(秒) */ public void setTokenValue(String tokenValue, int cookieTimeout){ - setTokenValue(tokenValue, new SaLoginModel().setTimeout(cookieTimeout)); + setTokenValue(tokenValue, createSaLoginParameter().setTimeout(cookieTimeout)); } /** * 在当前会话写入指定 token 值 * * @param tokenValue token 值 - * @param loginModel 登录参数 + * @param loginParameter 登录参数 */ - public void setTokenValue(String tokenValue, SaLoginModel loginModel){ + public void setTokenValue(String tokenValue, SaLoginParameter loginParameter){ // 先判断一下,如果提供 token 为空,则不执行任何动作 if(SaFoxUtil.isEmpty(tokenValue)) { return; } - // 构建一下 - loginModel.build(getConfigOrGlobal()); - // 1、将 token 写入到当前请求的 Storage 存储器里 setTokenValueToStorage(tokenValue); // 2. 将 token 写入到当前会话的 Cookie 里 if (getConfigOrGlobal().getIsReadCookie()) { - setTokenValueToCookie(tokenValue, loginModel.getCookieTimeout()); + setTokenValueToCookie(tokenValue, loginParameter.getCookieTimeout()); } // 3. 将 token 写入到当前请求的响应头中 - if(loginModel.getIsWriteHeader()) { + if(loginParameter.getIsWriteHeader()) { setTokenValueToResponseHeader(tokenValue); } } @@ -399,7 +396,7 @@ public class StpLogic { * @param id 账号id,建议的类型:(long | int | String) */ public void login(Object id) { - login(id, new SaLoginModel()); + login(id, createSaLoginParameter()); } /** @@ -409,7 +406,7 @@ public class StpLogic { * @param device 设备类型 */ public void login(Object id, String device) { - login(id, new SaLoginModel().setDevice(device)); + login(id, createSaLoginParameter().setDevice(device)); } /** @@ -419,7 +416,7 @@ public class StpLogic { * @param isLastingCookie 是否为持久Cookie,值为 true 时记住我,值为 false 时关闭浏览器需要重新登录 */ public void login(Object id, boolean isLastingCookie) { - login(id, new SaLoginModel().setIsLastingCookie(isLastingCookie)); + login(id, createSaLoginParameter().setIsLastingCookie(isLastingCookie)); } /** @@ -429,21 +426,21 @@ public class StpLogic { * @param timeout 此次登录 token 的有效期, 单位:秒 */ public void login(Object id, long timeout) { - login(id, new SaLoginModel().setTimeout(timeout)); + login(id, createSaLoginParameter().setTimeout(timeout)); } /** * 会话登录,并指定所有登录参数 Model * * @param id 账号id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model */ - public void login(Object id, SaLoginModel loginModel) { + public void login(Object id, SaLoginParameter loginParameter) { // 1、创建会话 - String token = createLoginSession(id, loginModel); + String token = createLoginSession(id, loginParameter); // 2、在当前客户端注入 token - setTokenValue(token, loginModel); + setTokenValue(token, loginParameter); } /** @@ -453,59 +450,57 @@ public class StpLogic { * @return 返回会话令牌 */ public String createLoginSession(Object id) { - return createLoginSession(id, new SaLoginModel()); + return createLoginSession(id, createSaLoginParameter()); } /** * 创建指定账号 id 的登录会话数据 * * @param id 账号id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model * @return 返回会话令牌 */ - public String createLoginSession(Object id, SaLoginModel loginModel) { + public String createLoginSession(Object id, SaLoginParameter loginParameter) { + + SaTokenConfig config = getConfigOrGlobal(); // 1、先检查一下,传入的参数是否有效 - checkLoginArgs(id, loginModel); - - // 2、初始化 loginModel ,给一些参数补上默认值 - SaTokenConfig config = getConfigOrGlobal(); - loginModel.build(config); + checkLoginArgs(id, loginParameter); - // 3、给这个账号分配一个可用的 token - String tokenValue = distUsableToken(id, loginModel); + // 2、给这个账号分配一个可用的 token + String tokenValue = distUsableToken(id, loginParameter); - // 4、获取此账号的 Account-Session , 续期 - SaSession session = getSessionByLoginId(id, true, loginModel.getTimeout()); - session.updateMinTimeout(loginModel.getTimeout()); + // 3、获取此账号的 Account-Session , 续期 + SaSession session = getSessionByLoginId(id, true, loginParameter.getTimeout()); + session.updateMinTimeout(loginParameter.getTimeout()); - // 5、在 Account-Session 上记录本次登录的 token 签名 - TokenSign tokenSign = new TokenSign(tokenValue, loginModel.getDeviceOrDefault(), loginModel.getTokenSignTag()); + // 4、在 Account-Session 上记录本次登录的 token 签名 + TokenSign tokenSign = new TokenSign(tokenValue, loginParameter.getDevice(), loginParameter.getTokenSignTag()); session.addTokenSign(tokenSign); - // 6、保存 token -> id 的映射关系,方便日后根据 token 找账号 id - saveTokenToIdMapping(tokenValue, id, loginModel.getTimeout()); + // 5、保存 token -> id 的映射关系,方便日后根据 token 找账号 id + saveTokenToIdMapping(tokenValue, id, loginParameter.getTimeout()); - // 7、写入这个 token 的最后活跃时间 token-last-active + // 6、写入这个 token 的最后活跃时间 token-last-active if(isOpenCheckActiveTimeout()) { - setLastActiveToNow(tokenValue, loginModel.getActiveTimeout(), loginModel.getTimeout()); + setLastActiveToNow(tokenValue, loginParameter.getActiveTimeout(), loginParameter.getTimeout()); } - // 8、如果该 token 对应的 Token-Session 已经存在,则需要给其续期 + // 7、如果该 token 对应的 Token-Session 已经存在,则需要给其续期 SaSession tokenSession = getTokenSessionByToken(tokenValue, false); if(tokenSession != null) { - tokenSession.updateMinTimeout(loginModel.getTimeout()); + tokenSession.updateMinTimeout(loginParameter.getTimeout()); } - // 9、$$ 发布全局事件:账号 xxx 登录成功 - SaTokenEventCenter.doLogin(loginType, id, tokenValue, loginModel); + // 8、$$ 发布全局事件:账号 xxx 登录成功 + SaTokenEventCenter.doLogin(loginType, id, tokenValue, loginParameter); - // 10、检查此账号会话数量是否超出最大值,如果超过,则按照登录时间顺序,把最开始登录的给注销掉 + // 9、检查此账号会话数量是否超出最大值,如果超过,则按照登录时间顺序,把最开始登录的给注销掉 if(config.getMaxLoginCount() != -1) { logoutByMaxLoginCount(id, session, null, config.getMaxLoginCount()); } - // 11、一切处理完毕,返回会话凭证 token + // 10、一切处理完毕,返回会话凭证 token return tokenValue; } @@ -513,21 +508,22 @@ public class StpLogic { * 为指定账号 id 的登录操作,分配一个可用的 token * * @param id 账号id - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model * @return 返回 token */ - protected String distUsableToken(Object id, SaLoginModel loginModel) { + protected String distUsableToken(Object id, SaLoginParameter loginParameter) { // 1、获取全局配置的 isConcurrent 参数 // 如果配置为:不允许一个账号多地同时登录,则需要先将这个账号的历史登录会话标记为:被顶下线 Boolean isConcurrent = getConfigOrGlobal().getIsConcurrent(); if( ! isConcurrent) { - replaced(id, loginModel.getDevice()); + // TODO 此处应该加一个配置决定是只顶掉当前设备类型,还是所有类型 + replaced(id, loginParameter.getDevice()); } // 2、如果调用者预定了要生成的 token,则直接返回这个预定的值,框架无需再操心了 - if(SaFoxUtil.isNotEmpty(loginModel.getToken())) { - return loginModel.getToken(); + if(SaFoxUtil.isNotEmpty(loginParameter.getToken())) { + return loginParameter.getToken(); } // 3、只有在配置了 [ 允许一个账号多地同时登录 ] 时,才尝试复用旧 token,这样可以避免不必要地查询,节省开销 @@ -537,7 +533,7 @@ public class StpLogic { if(getConfigOfIsShare()) { // 根据 账号id + 设备类型,尝试获取旧的 token - String tokenValue = getTokenValueByLoginId(id, loginModel.getDeviceOrDefault()); + String tokenValue = getTokenValueByLoginId(id, loginParameter.getDevice()); // 如果有值,那就直接复用 if(SaFoxUtil.isNotEmpty(tokenValue)) { @@ -554,7 +550,7 @@ public class StpLogic { "token", getConfigOfMaxTryTimes(), () -> { - return createTokenValue(id, loginModel.getDeviceOrDefault(), loginModel.getTimeout(), loginModel.getExtraData()); + return createTokenValue(id, loginParameter.getDevice(), loginParameter.getTimeout(), loginParameter.getExtraData()); }, tokenValue -> { return getLoginIdNotHandle(tokenValue) == null; @@ -566,9 +562,9 @@ public class StpLogic { * 校验登录时的参数有效性,如果有问题会打印警告或抛出异常 * * @param id 账号id - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model */ - protected void checkLoginArgs(Object id, SaLoginModel loginModel) { + protected void checkLoginArgs(Object id, SaLoginParameter loginParameter) { // 1、账号 id 不能为空 if(SaFoxUtil.isEmpty(id)) { @@ -588,14 +584,13 @@ public class StpLogic { // 4、判断当前 StpLogic 是否支持 extra 扩展参数 if( ! isSupportExtra()) { // 如果不支持,开发者却传入了 extra 扩展参数,那么就打印警告信息 - Map extraData = loginModel.getExtraData(); - if(extraData != null && extraData.size() > 0) { + if(loginParameter.isSetExtraData()) { SaManager.log.warn("当前 StpLogic 不支持 extra 扩展参数模式,传入的 extra 参数将被忽略"); } } // 5、如果全局配置未启动动态 activeTimeout 功能,但是此次登录却传入了 activeTimeout 参数,那么就打印警告信息 - if( ! getConfigOrGlobal().getDynamicActiveTimeout() && loginModel.getActiveTimeout() != null) { + if( ! getConfigOrGlobal().getDynamicActiveTimeout() && loginParameter.getActiveTimeout() != null) { SaManager.log.warn("当前全局配置未开启动态 activeTimeout 功能,传入的 activeTimeout 参数将被忽略"); } @@ -610,7 +605,7 @@ public class StpLogic { public String getOrCreateLoginSession(Object id) { String tokenValue = getTokenValueByLoginId(id); if(tokenValue == null) { - tokenValue = createLoginSession(id, new SaLoginModel()); + tokenValue = createLoginSession(id, createSaLoginParameter()); } return tokenValue; } @@ -2114,7 +2109,7 @@ public class StpLogic { */ public String getTokenValueByLoginId(Object loginId, String device) { List tokenValueList = getTokenValueListByLoginId(loginId, device); - return tokenValueList.size() == 0 ? null : tokenValueList.get(tokenValueList.size() - 1); + return tokenValueList.isEmpty() ? null : tokenValueList.get(tokenValueList.size() - 1); } /** @@ -2895,6 +2890,15 @@ public class StpLogic { return false; } + /** + * 根据当前配置对象创建一个 SaLoginParameter 对象 + * + * @return / + */ + public SaLoginParameter createSaLoginParameter() { + return new SaLoginParameter(getConfigOrGlobal()); + } + // ------------------- 过期方法 ------------------- diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java index 60cf4b92..d381ab67 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java @@ -117,10 +117,10 @@ public class StpUtil { * 在当前会话写入指定 token 值 * * @param tokenValue token 值 - * @param loginModel 登录参数 + * @param loginParameter 登录参数 */ - public static void setTokenValue(String tokenValue, SaLoginModel loginModel){ - stpLogic.setTokenValue(tokenValue, loginModel); + public static void setTokenValue(String tokenValue, SaLoginParameter loginParameter){ + stpLogic.setTokenValue(tokenValue, loginParameter); } /** @@ -198,10 +198,10 @@ public class StpUtil { * 会话登录,并指定所有登录参数 Model * * @param id 账号id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model */ - public static void login(Object id, SaLoginModel loginModel) { - stpLogic.login(id, loginModel); + public static void login(Object id, SaLoginParameter loginParameter) { + stpLogic.login(id, loginParameter); } /** @@ -218,11 +218,11 @@ public class StpUtil { * 创建指定账号 id 的登录会话数据 * * @param id 账号id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model * @return 返回会话令牌 */ - public static String createLoginSession(Object id, SaLoginModel loginModel) { - return stpLogic.createLoginSession(id, loginModel); + public static String createLoginSession(Object id, SaLoginParameter loginParameter) { + return stpLogic.createLoginSession(id, loginParameter); } /** @@ -1260,4 +1260,16 @@ public class StpUtil { stpLogic.closeSafe(service); } + + // ------------------- Bean 对象、字段代理 ------------------- + + /** + * 根据当前配置对象创建一个 SaLoginParameter 对象 + * + * @return / + */ + public static SaLoginParameter createSaLoginParameter() { + return stpLogic.createSaLoginParameter(); + } + } diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTokenListener.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTokenListener.java index 3a0f51e4..494b516d 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTokenListener.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTokenListener.java @@ -1,7 +1,7 @@ package com.pj.satoken; import cn.dev33.satoken.listener.SaTokenListener; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; /** * Sa-Token 自定义侦听器的实现 @@ -14,7 +14,7 @@ public class MySaTokenListener implements SaTokenListener { /** 每次登录时触发 */ @Override - public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter) { System.out.println("---------- 自定义侦听器实现 doLogin"); } 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 1bbabcf7..f8a6c045 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 @@ -5,7 +5,7 @@ import cn.dev33.satoken.fun.SaFunction; import cn.dev33.satoken.listener.SaTokenEventCenter; import cn.dev33.satoken.session.SaSession; import cn.dev33.satoken.session.TokenSign; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpLogic; import org.springframework.stereotype.Component; @@ -107,10 +107,10 @@ public class StpUserUtil { * 在当前会话写入指定 token 值 * * @param tokenValue token 值 - * @param loginModel 登录参数 + * @param loginParameter 登录参数 */ - public static void setTokenValue(String tokenValue, SaLoginModel loginModel){ - stpLogic.setTokenValue(tokenValue, loginModel); + public static void setTokenValue(String tokenValue, SaLoginParameter loginParameter){ + stpLogic.setTokenValue(tokenValue, loginParameter); } /** @@ -188,10 +188,10 @@ public class StpUserUtil { * 会话登录,并指定所有登录参数 Model * * @param id 账号id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model */ - public static void login(Object id, SaLoginModel loginModel) { - stpLogic.login(id, loginModel); + public static void login(Object id, SaLoginParameter loginParameter) { + stpLogic.login(id, loginParameter); } /** @@ -208,11 +208,11 @@ public class StpUserUtil { * 创建指定账号 id 的登录会话数据 * * @param id 账号id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model * @return 返回会话令牌 */ - public static String createLoginSession(Object id, SaLoginModel loginModel) { - return stpLogic.createLoginSession(id, loginModel); + public static String createLoginSession(Object id, SaLoginParameter loginParameter) { + return stpLogic.createLoginSession(id, loginParameter); } /** 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 9a54330e..38670c30 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 @@ -4,7 +4,7 @@ import cn.dev33.satoken.SaManager; import cn.dev33.satoken.fun.SaFunction; import cn.dev33.satoken.listener.SaTokenEventCenter; import cn.dev33.satoken.session.SaSession; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpLogic; @@ -104,10 +104,10 @@ public class StpUserUtil { * 在当前会话写入指定 token 值 * * @param tokenValue token 值 - * @param loginModel 登录参数 + * @param loginParameter 登录参数 */ - public static void setTokenValue(String tokenValue, SaLoginModel loginModel){ - stpLogic.setTokenValue(tokenValue, loginModel); + public static void setTokenValue(String tokenValue, SaLoginParameter loginParameter){ + stpLogic.setTokenValue(tokenValue, loginParameter); } /** @@ -185,10 +185,10 @@ public class StpUserUtil { * 会话登录,并指定所有登录参数 Model * * @param id 账号id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model */ - public static void login(Object id, SaLoginModel loginModel) { - stpLogic.login(id, loginModel); + public static void login(Object id, SaLoginParameter loginParameter) { + stpLogic.login(id, loginParameter); } /** @@ -205,11 +205,11 @@ public class StpUserUtil { * 创建指定账号 id 的登录会话数据 * * @param id 账号id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model * @return 返回会话令牌 */ - public static String createLoginSession(Object id, SaLoginModel loginModel) { - return stpLogic.createLoginSession(id, loginModel); + public static String createLoginSession(Object id, SaLoginParameter loginParameter) { + return stpLogic.createLoginSession(id, loginParameter); } /** 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 833b1e20..03cf82e8 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 @@ -3,7 +3,7 @@ package com.pj.test; import cn.dev33.satoken.annotation.SaCheckHttpDigest; import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.spring.SpringMVCUtil; -import cn.dev33.satoken.stp.SaLoginConfig; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaFoxUtil; import cn.dev33.satoken.util.SaResult; @@ -26,7 +26,7 @@ public class TestController { // 测试登录 ---- http://localhost:8081/test/login @RequestMapping("login") public SaResult login(@RequestParam(defaultValue = "10001") long id) { - StpUtil.login(id, SaLoginConfig.setActiveTimeout(-1)); + StpUtil.login(id, new SaLoginParameter().setActiveTimeout(-1)); return SaResult.ok("登录成功"); } diff --git a/sa-token-doc/api/stp-util.md b/sa-token-doc/api/stp-util.md index 12d2be16..e5dc6a4c 100644 --- a/sa-token-doc/api/stp-util.md +++ b/sa-token-doc/api/stp-util.md @@ -23,15 +23,15 @@ StpUtil.getTokenInfo(); // 获取当前 Token 的详细参数。 StpUtil.login(10001); // 会话登录 StpUtil.login(10001, "APP"); // 会话登录,并指定设备类型 StpUtil.login(10001, true); // 会话登录,并指定是否 [记住我] -StpUtil.login(10001, loginModel); // 会话登录,并指定所有登录参数Model +StpUtil.login(10001, loginParameter); // 会话登录,并指定所有登录参数Model StpUtil.createLoginSession(10001); // 创建指定账号id的登录会话,此方法不会将 Token 注入到上下文 -StpUtil.createLoginSession(10001, loginModel); // 创建指定账号id的登录会话,此方法不会将 Token 注入到上下文 +StpUtil.createLoginSession(10001, loginParameter); // 创建指定账号id的登录会话,此方法不会将 Token 注入到上下文 ``` -SaLoginModel 配置示例: +SaLoginParameter 配置示例: ``` java -// SaLoginModel 配置登录相关参数 -StpUtil.login(10001, new SaLoginModel() +// SaLoginParameter 配置登录相关参数 +StpUtil.login(10001, new SaLoginParameter() .setDevice("PC") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 .setIsLastingCookie(true) // 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) .setTimeout(60 * 60 * 24 * 7) // 指定此次登录token的有效期, 单位:秒 (如未指定,自动取全局配置的 timeout 值) diff --git a/sa-token-doc/oauth2/oauth2-interworking.md b/sa-token-doc/oauth2/oauth2-interworking.md index 0ca981f0..6fe61fa8 100644 --- a/sa-token-doc/oauth2/oauth2-interworking.md +++ b/sa-token-doc/oauth2/oauth2-interworking.md @@ -44,7 +44,7 @@ public void configOAuth2Server(SaOAuth2ServerConfig oauth2Server) { ### OAuth2-Client 数据互通 -除了Server端,Client端也可以打通 `access_token` 与 `satoken` 会话。做法是在 Client 端拿到 `access_token` 后进行登录时,使用 `SaLoginModel` 预定登录生成的 Token 值 +除了Server端,Client端也可以打通 `access_token` 与 `satoken` 会话。做法是在 Client 端拿到 `access_token` 后进行登录时,使用 `SaLoginParameter` 预定登录生成的 Token 值 ``` java // 1. 获取到access_token diff --git a/sa-token-doc/up/global-listener.md b/sa-token-doc/up/global-listener.md index 07790ea7..15cf4341 100644 --- a/sa-token-doc/up/global-listener.md +++ b/sa-token-doc/up/global-listener.md @@ -33,7 +33,7 @@ public class MySaTokenListener implements SaTokenListener { /** 每次登录时触发 */ @Override - public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter) { System.out.println("---------- 自定义侦听器实现 doLogin"); } @@ -171,7 +171,7 @@ public class MySaTokenListener extends SaTokenListenerForSimple { */ /** 每次登录时触发 */ @Override - public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter) { System.out.println("---------- 自定义侦听器实现 doLogin"); } } @@ -182,7 +182,7 @@ public class MySaTokenListener extends SaTokenListenerForSimple { // 登录时触发 SaTokenEventCenter.registerListener(new SaTokenListenerForSimple() { @Override - public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter) { System.out.println("---------------- doLogin"); } }); @@ -195,7 +195,7 @@ SaTokenEventCenter.registerListener(new SaTokenListenerForSimple() { // 登录时触发 SaTokenEventCenter.registerListener(new SaTokenListenerForSimple() { @Override - public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) { + public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginParameter loginParameter) { try { // 不安全代码需要写在 try-catch 里 // ...... diff --git a/sa-token-doc/up/remember-me.md b/sa-token-doc/up/remember-me.md index c177fc83..6c6f2577 100644 --- a/sa-token-doc/up/remember-me.md +++ b/sa-token-doc/up/remember-me.md @@ -67,11 +67,11 @@ Remember me, it's too easy! ``` java // 示例1: // 指定token有效期(单位: 秒),如下所示token七天有效 -StpUtil.login(10001, new SaLoginModel().setTimeout(60 * 60 * 24 * 7)); +StpUtil.login(10001, new SaLoginParameter().setTimeout(60 * 60 * 24 * 7)); // ----------------------- 示例2:所有参数 -// `SaLoginModel`为登录参数Model,其有诸多参数决定登录时的各种逻辑,例如: -StpUtil.login(10001, new SaLoginModel() +// `SaLoginParameter`为登录参数Model,其有诸多参数决定登录时的各种逻辑,例如: +StpUtil.login(10001, new SaLoginParameter() .setDevice("PC") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 .setIsLastingCookie(true) // 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) .setTimeout(60 * 60 * 24 * 7) // 指定此次登录token的有效期, 单位:秒 (如未指定,自动取全局配置的 timeout 值) diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java index b12d14b2..1d376dea 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java @@ -22,7 +22,7 @@ import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.jwt.error.SaJwtErrorCode; import cn.dev33.satoken.jwt.exception.SaJwtException; import cn.dev33.satoken.listener.SaTokenEventCenter; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.stp.StpUtil; @@ -102,23 +102,20 @@ public class StpLogicJwtForStateless extends StpLogic { /** * 创建指定账号id的登录会话 * @param id 登录id,建议的类型:(long | int | String) - * @param loginModel 此次登录的参数Model + * @param loginParameter 此次登录的参数Model * @return 返回会话令牌 */ @Override - public String createLoginSession(Object id, SaLoginModel loginModel) { + public String createLoginSession(Object id, SaLoginParameter loginParameter) { // 1、先检查一下,传入的参数是否有效 - checkLoginArgs(id, loginModel); + checkLoginArgs(id, loginParameter); - // 2、初始化 loginModel ,给一些参数补上默认值 - loginModel.build(getConfigOrGlobal()); - // 3、生成一个token - String tokenValue = createTokenValue(id, loginModel.getDeviceOrDefault(), loginModel.getTimeout(), loginModel.getExtraData()); + String tokenValue = createTokenValue(id, loginParameter.getDevice(), loginParameter.getTimeout(), loginParameter.getExtraData()); // 4、$$ 发布事件:账号xxx 登录成功 - SaTokenEventCenter.doLogin(loginType, id, tokenValue, loginModel); + SaTokenEventCenter.doLogin(loginType, id, tokenValue, loginParameter); // 5、返回 return tokenValue; diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/stp/TokenInfoTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/stp/TokenInfoTest.java index f0956425..c8b2e3f1 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/stp/TokenInfoTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/stp/TokenInfoTest.java @@ -22,7 +22,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import cn.dev33.satoken.stp.SaLoginConfig; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.util.SaTokenConsts; @@ -65,7 +65,7 @@ public class TokenInfoTest { } @Test - public void testLoginModel() { + public void testLoginParameter() { Assertions.assertEquals(SaLoginConfig.setDevice("PC").getDevice(), "PC"); Assertions.assertEquals(SaLoginConfig.setIsLastingCookie(false).getIsLastingCookie(), false); Assertions.assertEquals(SaLoginConfig.setTimeout(1600).getTimeout(), 1600); @@ -74,19 +74,19 @@ public class TokenInfoTest { Map extraData = new HashMap<>(); extraData.put("age", 20); - SaLoginModel lm = SaLoginConfig.setExtraData(extraData); + SaLoginParameter lm = SaLoginConfig.setExtraData(extraData); Assertions.assertEquals(lm.getExtraData(), extraData); Assertions.assertEquals(lm.getExtra("age"), 20); Assertions.assertTrue(lm.isSetExtraData()); Assertions.assertNotNull(lm.toString()); // 计算 CookieTimeout - SaLoginModel loginModel = SaLoginModel + SaLoginParameter loginParameter = SaLoginParameter .create() .setTimeout(-1); - loginModel.build(); - Assertions.assertEquals(loginModel.getCookieTimeout(), Integer.MAX_VALUE); - Assertions.assertEquals(loginModel.getDeviceOrDefault(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); + loginParameter.build(); + Assertions.assertEquals(loginParameter.getCookieTimeout(), Integer.MAX_VALUE); + Assertions.assertEquals(loginParameter.getDeviceOrDefault(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); } } diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/BasicsTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/BasicsTest.java index 719e83b4..e6242b1f 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/BasicsTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/BasicsTest.java @@ -26,7 +26,7 @@ import cn.dev33.satoken.session.SaSession; import cn.dev33.satoken.spring.SpringMVCUtil; import cn.dev33.satoken.spring.pathmatch.SaPathMatcherHolder; import cn.dev33.satoken.stp.SaLoginConfig; -import cn.dev33.satoken.stp.SaLoginModel; +import cn.dev33.satoken.stp.SaLoginParameter; import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaTokenConsts; @@ -646,7 +646,7 @@ public class BasicsTest { @Test public void testDoLoginBySetToken() { // 预定 Token 登录 - StpUtil.login(10001, new SaLoginModel().setToken("qwer-qwer-qwer-qwer")); + StpUtil.login(10001, new SaLoginParameter().setToken("qwer-qwer-qwer-qwer")); Assertions.assertEquals(StpUtil.getTokenValue(), "qwer-qwer-qwer-qwer"); // 注销后,应该清除Token @@ -663,7 +663,7 @@ public class BasicsTest { Assertions.assertNull(StpUtil.getTokenValue()); // 无上下文注入的登录 - String token = StpUtil.createLoginSession(10001, new SaLoginModel()); + String token = StpUtil.createLoginSession(10001, new SaLoginParameter()); Assertions.assertNull(StpUtil.getTokenValue()); // 手动写入