mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-05-04 12:47:55 +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;
|
private Boolean isReadCookie = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在)
|
||||||
|
*/
|
||||||
|
private Boolean isLastingCookie = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否在登录后将 token 写入到响应头
|
* 是否在登录后将 token 写入到响应头
|
||||||
*/
|
*/
|
||||||
@ -360,6 +365,26 @@ public class SaTokenConfig implements Serializable {
|
|||||||
return this;
|
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 写入到响应头
|
* @return 是否在登录后将 token 写入到响应头
|
||||||
*/
|
*/
|
||||||
@ -684,6 +709,7 @@ public class SaTokenConfig implements Serializable {
|
|||||||
+ ", isReadBody=" + isReadBody
|
+ ", isReadBody=" + isReadBody
|
||||||
+ ", isReadHeader=" + isReadHeader
|
+ ", isReadHeader=" + isReadHeader
|
||||||
+ ", isReadCookie=" + isReadCookie
|
+ ", isReadCookie=" + isReadCookie
|
||||||
|
+ ", isLastingCookie=" + isLastingCookie
|
||||||
+ ", isWriteHeader=" + isWriteHeader
|
+ ", isWriteHeader=" + isWriteHeader
|
||||||
+ ", tokenStyle=" + tokenStyle
|
+ ", tokenStyle=" + tokenStyle
|
||||||
+ ", dataRefreshPeriod=" + dataRefreshPeriod
|
+ ", dataRefreshPeriod=" + dataRefreshPeriod
|
||||||
|
@ -36,15 +36,30 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public class SaLoginModel {
|
public class SaLoginModel {
|
||||||
|
|
||||||
|
// --------- 单独参数
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 此次登录的客户端设备类型
|
* 此次登录的客户端设备类型
|
||||||
*/
|
*/
|
||||||
public String device;
|
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 值)
|
* 指定此次登录 token 有效期,单位:秒 (如未指定,自动取全局配置的 timeout 值)
|
||||||
@ -57,21 +72,118 @@ public class SaLoginModel {
|
|||||||
private Long activeTimeout;
|
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;
|
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 此次登录的客户端设备类型
|
* @return 此次登录的客户端设备类型
|
||||||
@ -207,7 +319,7 @@ public class SaLoginModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* toString
|
* toString
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user