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 tokenValue token值
* @param device 设备类型 * @param device 设备类型
*/ */
@Deprecated
public void addTokenSign(String tokenValue, String device) { 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 String device;
/**
* 此客户端登录的挂载数据
*/
private Object tag;
/** /**
* 构建一个 * 构建一个
*/ */
@ -53,10 +58,12 @@ public class TokenSign implements Serializable {
* *
* @param value Token * @param value Token
* @param device 所属设备类型 * @param device 所属设备类型
* @param tag 此客户端登录的挂载数据
*/ */
public TokenSign(String value, String device) { public TokenSign(String value, String device, Object tag) {
this.value = value; this.value = value;
this.device = device; this.device = device;
this.tag = tag;
} }
/** /**
@ -95,10 +102,30 @@ public class TokenSign implements Serializable {
return this; return this;
} }
/**
* 获取 此客户端登录的挂载数据
*
* @return /
*/
public Object getTag() {
return this.tag;
}
/**
* 设置 此客户端登录的挂载数据
*
* @param tag /
* @return 对象自身
*/
public TokenSign setTag(Object tag) {
this.tag = tag;
return this;
}
// //
@Override @Override
public String toString() { 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); return create().setIsWriteHeader(isWriteHeader);
} }
/**
* 设置 本次登录挂载到 TokenSign 的数据
*
* @param tokenSignTag /
* @return 登录参数 Model
*/
public static SaLoginModel setTokenSignTag(Object tokenSignTag) {
return create().setTokenSignTag(tokenSignTag);
}
/** /**
* 静态方法获取一个 SaLoginModel 对象 * 静态方法获取一个 SaLoginModel 对象
* @return SaLoginModel 对象 * @return SaLoginModel 对象

View File

@ -63,8 +63,11 @@ public class SaLoginModel {
/** 是否在登录后将 Token 写入到响应头 */ /** 是否在登录后将 Token 写入到响应头 */
private Boolean isWriteHeader; private Boolean isWriteHeader;
/** 本次登录挂载到 TokenSign 的数据 */
private Object tokenSignTag;
/** /**
* @return 此次登录的客户端设备类型 * @return 此次登录的客户端设备类型
*/ */
@ -191,6 +194,25 @@ public class SaLoginModel {
return this; 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 * toString
*/ */
@ -203,6 +225,7 @@ public class SaLoginModel {
+ ", extraData=" + extraData + ", extraData=" + extraData
+ ", token=" + token + ", token=" + token
+ ", isWriteHeader=" + isWriteHeader + ", isWriteHeader=" + isWriteHeader
+ ", tokenSignTag=" + tokenSignTag
+ "]"; + "]";
} }

View File

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

View File

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