feat: SaLoginParameter 支持配置 isShare

This commit is contained in:
click33
2025-03-02 01:25:14 +08:00
parent 16cf2db334
commit 3bc9e88645
5 changed files with 35 additions and 8 deletions

View File

@@ -81,6 +81,11 @@ public class SaLoginParameter {
*/
private Boolean isConcurrent;
/**
* 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token
*/
private Boolean isShare = true;
/**
* 是否为持久Cookie临时Cookie在浏览器关闭时会自动删除持久Cookie在重新打开后依然存在
*/
@@ -111,6 +116,7 @@ public class SaLoginParameter {
this.device = SaTokenConsts.DEFAULT_LOGIN_DEVICE;
this.timeout = config.getTimeout();
this.isConcurrent = config.getIsConcurrent();
this.isShare = config.getIsShare();
this.isLastingCookie = config.getIsLastingCookie();
this.isWriteHeader = config.getIsWriteHeader();
return this;
@@ -271,6 +277,22 @@ public class SaLoginParameter {
return this;
}
/**
* @return 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个token, 为 false 时每次登录新建一个 token
*/
public Boolean getIsShare() {
return isShare;
}
/**
* @param isShare 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个token, 为 false 时每次登录新建一个 token
* @return 对象自身
*/
public SaLoginParameter setIsShare(Boolean isShare) {
this.isShare = isShare;
return this;
}
/**
* @return 扩展信息只在jwt模式下生效
*/
@@ -349,6 +371,8 @@ public class SaLoginParameter {
+ ", isLastingCookie=" + isLastingCookie
+ ", timeout=" + timeout
+ ", activeTimeout=" + activeTimeout
+ ", isConcurrent=" + isConcurrent
+ ", isShare=" + isShare
+ ", extraData=" + extraData
+ ", token=" + token
+ ", isWriteHeader=" + isWriteHeader

View File

@@ -528,8 +528,8 @@ public class StpLogic {
// 3、只有在配置了 [ 允许一个账号多地同时登录 ] 时,才尝试复用旧 token这样可以避免不必要地查询节省开销
if(loginParameter.getIsConcurrent()) {
// 3.1、看看全局配置的 IsShare 参数,配置为 true 才是允许复用旧 token
if(getConfigOfIsShare()) {
// 3.1、如果配置了允许复用旧 token
if(isSupportShareToken() && loginParameter.getIsShare()) {
// 根据 账号id + 设备类型,尝试获取旧的 token
String tokenValue = getTokenValueByLoginId(id, loginParameter.getDevice());
@@ -2829,11 +2829,11 @@ public class StpLogic {
}
/**
* 返回全局配置对象的 isShare 属性
* 返回当前 StpLogic 是否支持共享 token 策略
*
* @return /
* @return /
*/
public boolean getConfigOfIsShare() {
public boolean isSupportShareToken() {
return getConfigOrGlobal().getIsShare();
}