mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-05-04 04:37:56 +08:00
feat: isLastingCookie 配置项支持在全局配置中定义了
This commit is contained in:
parent
2d6c371638
commit
ce74d5f41f
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user