feat: isLastingCookie 配置项支持在全局配置中定义了

This commit is contained in:
click33 2025-03-01 10:07:32 +08:00
parent 2d6c371638
commit ce74d5f41f
2 changed files with 150 additions and 145 deletions

View File

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

View File

@ -36,15 +36,30 @@ import java.util.Map;
*/
public class SaLoginModel {
// --------- 单独参数
/**
* 此次登录的客户端设备类型
*/
public String device;
/**
* 是否为持久Cookie临时Cookie在浏览器关闭时会自动删除持久Cookie在重新打开后依然存在
* 扩展信息只在 jwt 模式下生效
*/
public Boolean isLastingCookie = true;
public Map<String, Object> 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<String, Object> 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 此次登录的客户端设备类型
@ -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;
}
}