TokenSign 新增 tag 挂载参数

This commit is contained in:
click33 2023-05-18 21:03:43 +08:00
parent fa16d9c5e1
commit c5caad7a64
6 changed files with 69 additions and 7 deletions

View File

@ -328,8 +328,9 @@ public class SaSession implements SaSetValueInterface, Serializable {
* @param tokenValue token值
* @param device 设备类型
*/
@Deprecated
public void addTokenSign(String tokenValue, String device) {
addTokenSign(new TokenSign(tokenValue, device));
addTokenSign(new TokenSign(tokenValue, device, null));
}
/**

View File

@ -42,6 +42,11 @@ public class TokenSign implements Serializable {
*/
private String device;
/**
* 此客户端登录的挂载数据
*/
private Object tag;
/**
* 构建一个
*/
@ -53,10 +58,12 @@ public class TokenSign implements Serializable {
*
* @param value Token
* @param device 所属设备类型
* @param tag 此客户端登录的挂载数据
*/
public TokenSign(String value, String device) {
public TokenSign(String value, String device, Object tag) {
this.value = value;
this.device = device;
this.tag = tag;
}
/**
@ -95,10 +102,30 @@ public class TokenSign implements Serializable {
return this;
}
/**
* 获取 此客户端登录的挂载数据
*
* @return /
*/
public Object getTag() {
return this.tag;
}
/**
* 设置 此客户端登录的挂载数据
*
* @param tag /
* @return 对象自身
*/
public TokenSign setTag(Object tag) {
this.tag = tag;
return this;
}
//
@Override
public String toString() {
return "TokenSign [value=" + value + ", device=" + device + "]";
return "TokenSign [value=" + value + ", device=" + device + ", tag=" + tag + "]";
}
}

View File

@ -94,6 +94,16 @@ public class SaLoginConfig {
return create().setIsWriteHeader(isWriteHeader);
}
/**
* 设置 本次登录挂载到 TokenSign 的数据
*
* @param tokenSignTag /
* @return 登录参数 Model
*/
public static SaLoginModel setTokenSignTag(Object tokenSignTag) {
return create().setTokenSignTag(tokenSignTag);
}
/**
* 静态方法获取一个 SaLoginModel 对象
* @return SaLoginModel 对象

View File

@ -63,8 +63,11 @@ public class SaLoginModel {
/** 是否在登录后将 Token 写入到响应头 */
private Boolean isWriteHeader;
/** 本次登录挂载到 TokenSign 的数据 */
private Object tokenSignTag;
/**
* @return 此次登录的客户端设备类型
*/
@ -191,6 +194,25 @@ public class SaLoginModel {
return this;
}
/**
* 获取 本次登录挂载到 TokenSign 的数据
*
* @return tokenSignTag 本次登录挂载到 TokenSign 的数据
*/
public Object getTokenSignTag() {
return this.tokenSignTag;
}
/**
* 设置 本次登录挂载到 TokenSign 的数据
*
* @param tokenSignTag 本次登录挂载到 TokenSign 的数据
* @return 对象自身
*/
public SaLoginModel setTokenSignTag(Object tokenSignTag) {
this.tokenSignTag = tokenSignTag;
return this;
}
/*
* toString
*/
@ -203,6 +225,7 @@ public class SaLoginModel {
+ ", extraData=" + extraData
+ ", token=" + token
+ ", isWriteHeader=" + isWriteHeader
+ ", tokenSignTag=" + tokenSignTag
+ "]";
}

View File

@ -435,7 +435,8 @@ public class StpLogic {
session.updateMinTimeout(loginModel.getTimeout());
// 5 Account-Session 上记录本次登录的 token 签名
session.addTokenSign(tokenValue, loginModel.getDeviceOrDefault());
TokenSign tokenSign = new TokenSign(tokenValue, loginModel.getDeviceOrDefault(), loginModel.getTokenSignTag());
session.addTokenSign(tokenSign);
// 6保存 token -> id 的映射关系方便日后根据 token 找账号 id
saveTokenToIdMapping(tokenValue, id, loginModel.getTimeout());

View File

@ -11,7 +11,7 @@
单点登录——就是为了解决这个问题而生!
简而言之,单点登录可以做到:**`在多个互相信任的系统中,用户只需登录一次,就可以访问所有系统。`**
简而言之,单点登录可以做到: **`在多个互相信任的系统中,用户只需登录一次,就可以访问所有系统。`**
### 架构选型