diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java index 1f551cff..456b2459 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java @@ -86,6 +86,11 @@ public class SaTokenConfig implements Serializable { */ private Boolean isReadCookie = true; + /** + * 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) + */ + private Boolean isLastingCookie = true; + /** * 是否在登录后将 token 写入到响应头 */ @@ -360,6 +365,26 @@ public class SaTokenConfig implements Serializable { return this; } + /** + * 获取 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) + * + * @return isLastingCookie / + */ + public Boolean getIsLastingCookie() { + return this.isLastingCookie; + } + + /** + * 设置 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) + * + * @param isLastingCookie / + * @return 对象自身 + */ + public SaTokenConfig setIsLastingCookie(Boolean isLastingCookie) { + this.isLastingCookie = isLastingCookie; + return this; + } + /** * @return 是否在登录后将 token 写入到响应头 */ @@ -684,6 +709,7 @@ public class SaTokenConfig implements Serializable { + ", isReadBody=" + isReadBody + ", isReadHeader=" + isReadHeader + ", isReadCookie=" + isReadCookie + + ", isLastingCookie=" + isLastingCookie + ", isWriteHeader=" + isWriteHeader + ", tokenStyle=" + tokenStyle + ", dataRefreshPeriod=" + dataRefreshPeriod 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/SaLoginModel.java index f65d5e3d..e12e5976 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/SaLoginModel.java @@ -36,15 +36,30 @@ import java.util.Map; */ public class SaLoginModel { + // --------- 单独参数 + /** * 此次登录的客户端设备类型 */ public String device; - + /** - * 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) + * 扩展信息(只在 jwt 模式下生效) */ - public Boolean isLastingCookie = true; + public Map extraData; + + /** + * 预定Token(预定本次登录生成的Token值) + */ + public String token; + + /** + * 本次登录挂载到 TokenSign 的数据 + */ + private Object tokenSignTag; + + + // --------- 覆盖性参数 /** * 指定此次登录 token 有效期,单位:秒 (如未指定,自动取全局配置的 timeout 值) @@ -57,21 +72,118 @@ public class SaLoginModel { private Long activeTimeout; /** - * 扩展信息(只在jwt模式下生效) + * 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) */ - public Map extraData; + public Boolean isLastingCookie; /** - * 预定Token(预定本次登录生成的Token值) + * 是否在登录后将 Token 写入到响应头 */ - public String token; - - /** 是否在登录后将 Token 写入到响应头 */ private Boolean isWriteHeader; - /** 本次登录挂载到 TokenSign 的数据 */ - private Object tokenSignTag; + // ------ 附加方法 + + /** + * 写入扩展数据(只在jwt模式下生效) + * @param key 键 + * @param value 值 + * @return 对象自身 + */ + public SaLoginModel setExtra(String key, Object value) { + if(this.extraData == null) { + this.extraData = new LinkedHashMap<>(); + } + this.extraData.put(key, value); + return this; + } + + /** + * 获取扩展数据(只在jwt模式下生效) + * @param key 键 + * @return 扩展数据的值 + */ + public Object getExtra(String key) { + if(this.extraData == null) { + return null; + } + return this.extraData.get(key); + } + + /** + * 判断是否设置了扩展数据 + * @return / + */ + public boolean isSetExtraData() { + return extraData != null && !extraData.isEmpty(); + } + + /** + * @return Cookie时长 + */ + public int getCookieTimeout() { + if( ! getIsLastingCookie()) { + return -1; + } + long _timeout = getTimeout(); + if(_timeout == SaTokenDao.NEVER_EXPIRE || _timeout > Integer.MAX_VALUE) { + return Integer.MAX_VALUE; + } + return (int)_timeout; + } + + /** + * @return 获取device参数,如果为null,则返回默认值 + */ + public String getDeviceOrDefault() { + if(device == null) { + return SaTokenConsts.DEFAULT_LOGIN_DEVICE; + } + return device; + } + + /** + * 构建对象,初始化默认值 + * @return 对象自身 + */ + 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(); + } + + + // ---------------- 过期方法 + + + // ---------------- get set /** * @return 此次登录的客户端设备类型 @@ -207,7 +319,7 @@ public class SaLoginModel { } /* - * toString + * toString */ @Override public String toString() { @@ -224,138 +336,5 @@ public class SaLoginModel { } - // ------ 附加方法 - - /** - * @return 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) - */ - public Boolean getIsLastingCookieOrFalse() { - if(isLastingCookie == null) { - return false; - } - return isLastingCookie; - } - - /** - * 写入扩展数据(只在jwt模式下生效) - * @param key 键 - * @param value 值 - * @return 对象自身 - */ - public SaLoginModel setExtra(String key, Object value) { - if(this.extraData == null) { - this.extraData = new LinkedHashMap<>(); - } - this.extraData.put(key, value); - return this; - } - - /** - * 获取扩展数据(只在jwt模式下生效) - * @param key 键 - * @return 扩展数据的值 - */ - public Object getExtra(String key) { - if(this.extraData == null) { - return null; - } - return this.extraData.get(key); - } - - /** - * 判断是否设置了扩展数据 - * @return / - */ - public boolean isSetExtraData() { - return extraData != null && extraData.size() != 0; - } - - /** - * @return Cookie时长 - */ - public int getCookieTimeout() { - if( ! getIsLastingCookieOrFalse()) { - return -1; - } - long _timeout = getTimeout(); - if(_timeout == SaTokenDao.NEVER_EXPIRE || _timeout > Integer.MAX_VALUE) { - return Integer.MAX_VALUE; - } - return (int)_timeout; - } - - /** - * @return 获取device参数,如果为null,则返回默认值 - */ - public String getDeviceOrDefault() { - if(device == null) { - return SaTokenConsts.DEFAULT_LOGIN_DEVICE; - } - return device; - } - - /** - * 构建对象,初始化默认值 - * @return 对象自身 - */ - 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 = true; -// } - if(timeout == null) { - timeout = config.getTimeout(); - } - if(isWriteHeader == null) { - isWriteHeader = config.getIsWriteHeader(); - } - return this; - } - - /** - * 静态方法获取一个 SaLoginModel 对象 - * @return SaLoginModel 对象 - */ - public static SaLoginModel create() { - return new SaLoginModel(); - } - - - // ---------------- 过期方法 - - /** - * 请改为 getTimeout - * @return timeout 值 (如果此配置项尚未配置,则取全局配置的值) - */ - @Deprecated - public Long getTimeoutOrGlobalConfig() { - if(timeout == null) { - timeout = SaManager.getConfig().getTimeout(); - } - return timeout; - } - - /** - * 请改为 getIsWriteHeader - * @return 是否在登录后将 Token 写入到响应头 (如果此配置项尚未配置,则取全局配置的值) - */ - @Deprecated - public Boolean getIsWriteHeaderOrGlobalConfig() { - if(isWriteHeader == null) { - isWriteHeader = SaManager.getConfig().getIsWriteHeader(); - } - return isWriteHeader; - } }