mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-10-21 02:57:23 +08:00
feat: SaTerminalInfo 新增 extraData 自定义扩展数据设置
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
package cn.dev33.satoken.session;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 登录设备终端信息 Model
|
||||
@@ -51,9 +53,9 @@ public class SaTerminalInfo implements Serializable {
|
||||
private String deviceId;
|
||||
|
||||
/**
|
||||
* 此次登录的自定义挂载数据
|
||||
* 此次登录的自定义扩展数据 (只允许在登录前设定,登录后不建议更改)
|
||||
*/
|
||||
private Object tag;
|
||||
private Map<String, Object> extraData;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
@@ -72,16 +74,56 @@ public class SaTerminalInfo implements Serializable {
|
||||
* @param index 登录会话索引值 (该账号第几个登录的设备)
|
||||
* @param tokenValue Token 值
|
||||
* @param deviceType 所属设备类型
|
||||
* @param tag 此客户端登录的挂载数据
|
||||
* @param extraData 此客户端登录的挂载数据
|
||||
*/
|
||||
public SaTerminalInfo(int index, String tokenValue, String deviceType, Object tag) {
|
||||
public SaTerminalInfo(int index, String tokenValue, String deviceType, Map<String, Object> extraData) {
|
||||
this.index = index;
|
||||
this.tokenValue = tokenValue;
|
||||
this.deviceType = deviceType;
|
||||
this.tag = tag;
|
||||
this.extraData = extraData;
|
||||
this.createTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
// 扩展方法
|
||||
|
||||
/**
|
||||
* 此次登录的自定义扩展数据 (只允许在登录前设定,登录后不建议更改)
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @return 对象自身
|
||||
*/
|
||||
public SaTerminalInfo setExtra(String key, Object value) {
|
||||
if(this.extraData == null) {
|
||||
this.extraData = new LinkedHashMap<>();
|
||||
}
|
||||
this.extraData.put(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 此次登录的自定义扩展数据
|
||||
* @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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -------------------- get/set --------------------
|
||||
|
||||
/**
|
||||
* 获取 登录会话索引值 (该账号第几个登录的设备)
|
||||
*
|
||||
@@ -163,18 +205,18 @@ public class SaTerminalInfo implements Serializable {
|
||||
*
|
||||
* @return /
|
||||
*/
|
||||
public Object getTag() {
|
||||
return this.tag;
|
||||
public Map<String, Object> getExtraData() {
|
||||
return this.extraData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 此客户端登录的挂载数据
|
||||
*
|
||||
* @param tag /
|
||||
* @param extraData /
|
||||
* @return 对象自身
|
||||
*/
|
||||
public SaTerminalInfo setTag(Object tag) {
|
||||
this.tag = tag;
|
||||
public SaTerminalInfo setExtraData(Map<String, Object> extraData) {
|
||||
this.extraData = extraData;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -206,7 +248,7 @@ public class SaTerminalInfo implements Serializable {
|
||||
", tokenValue=" + tokenValue +
|
||||
", deviceType=" + deviceType +
|
||||
", deviceId=" + deviceId +
|
||||
", tag=" + tag +
|
||||
", extraData=" + extraData +
|
||||
", createTime=" + createTime +
|
||||
"]";
|
||||
}
|
||||
|
@@ -113,8 +113,8 @@ public class SaLoginConfig {
|
||||
* @param tokenSignTag /
|
||||
* @return 登录参数 Model
|
||||
*/
|
||||
public static SaLoginParameter setTokenSignTag(Object tokenSignTag) {
|
||||
return create().setTerminalTag(tokenSignTag);
|
||||
public static SaLoginParameter setTokenSignTag(Map<String, Object> tokenSignTag) {
|
||||
return create().setTerminalExtraData(tokenSignTag);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -59,9 +59,9 @@ public class SaLoginParameter {
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* 本次登录挂载到 SaTerminalInfo 的自定义数据
|
||||
* 本次登录挂载到 SaTerminalInfo 的自定义扩展数据
|
||||
*/
|
||||
private Object terminalTag;
|
||||
private Map<String, Object> terminalExtraData;
|
||||
|
||||
|
||||
// --------- 覆盖性参数
|
||||
@@ -134,13 +134,11 @@ public class SaLoginParameter {
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 写入扩展数据(只在jwt模式下生效)
|
||||
* 写入扩展数据(只在jwt模式下生效)
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @return 对象自身
|
||||
* @param value 值
|
||||
* @return 对象自身
|
||||
*/
|
||||
public SaLoginParameter setExtra(String key, Object value) {
|
||||
if(this.extraData == null) {
|
||||
@@ -151,9 +149,9 @@ public class SaLoginParameter {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取扩展数据(只在jwt模式下生效)
|
||||
* 获取扩展数据(只在jwt模式下生效)
|
||||
* @param key 键
|
||||
* @return 扩展数据的值
|
||||
* @return 扩展数据的值
|
||||
*/
|
||||
public Object getExtra(String key) {
|
||||
if(this.extraData == null) {
|
||||
@@ -163,13 +161,47 @@ public class SaLoginParameter {
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否设置了扩展数据
|
||||
* @return /
|
||||
* 判断是否设置了扩展数据(只在jwt模式下生效)
|
||||
* @return /
|
||||
*/
|
||||
public boolean isSetExtraData() {
|
||||
return extraData != null && !extraData.isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入本次登录挂载到 SaTerminalInfo 的自定义扩展数据
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @return 对象自身
|
||||
*/
|
||||
public SaLoginParameter setTerminalExtra(String key, Object value) {
|
||||
if(this.terminalExtraData == null) {
|
||||
this.terminalExtraData = new LinkedHashMap<>();
|
||||
}
|
||||
this.terminalExtraData.put(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取本次登录挂载到 SaTerminalInfo 的自定义扩展数据
|
||||
* @param key 键
|
||||
* @return 扩展数据的值
|
||||
*/
|
||||
public Object getTerminalExtra(String key) {
|
||||
if(this.terminalExtraData == null) {
|
||||
return null;
|
||||
}
|
||||
return this.terminalExtraData.get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否设置了本次登录挂载到 SaTerminalInfo 的自定义扩展数据
|
||||
* @return /
|
||||
*/
|
||||
public boolean isSetTerminalExtraData() {
|
||||
return terminalExtraData != null && !terminalExtraData.isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算 Cookie 时长
|
||||
* @return /
|
||||
@@ -204,8 +236,6 @@ public class SaLoginParameter {
|
||||
}
|
||||
|
||||
|
||||
// ---------------- 过期方法
|
||||
|
||||
|
||||
// ---------------- get set
|
||||
|
||||
@@ -405,22 +435,22 @@ public class SaLoginParameter {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 本次登录挂载到 SaTerminalInfo 的自定义数据
|
||||
* 获取 本次登录挂载到 SaTerminalInfo 的自定义扩展数据
|
||||
*
|
||||
* @return 本次登录挂载到 SaTerminalInfo 的自定义数据
|
||||
* @return /
|
||||
*/
|
||||
public Object getTerminalTag() {
|
||||
return this.terminalTag;
|
||||
public Map<String, Object> getTerminalExtraData() {
|
||||
return this.terminalExtraData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 本次登录挂载到 SaTerminalInfo 的自定义数据
|
||||
* 设置 本次登录挂载到 SaTerminalInfo 的自定义扩展数据
|
||||
*
|
||||
* @param terminalTag 本次登录挂载到 SaTerminalInfo 的自定义数据
|
||||
* @param terminalExtraData /
|
||||
* @return 对象自身
|
||||
*/
|
||||
public SaLoginParameter setTerminalTag(Object terminalTag) {
|
||||
this.terminalTag = terminalTag;
|
||||
public SaLoginParameter setTerminalExtraData(Map<String, Object> terminalExtraData) {
|
||||
this.terminalExtraData = terminalExtraData;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -442,7 +472,7 @@ public class SaLoginParameter {
|
||||
+ ", extraData=" + extraData
|
||||
+ ", token=" + token
|
||||
+ ", isWriteHeader=" + isWriteHeader
|
||||
+ ", terminalTag=" + terminalTag
|
||||
+ ", terminalTag=" + terminalExtraData
|
||||
+ "]";
|
||||
}
|
||||
|
||||
|
@@ -477,7 +477,7 @@ public class StpLogic {
|
||||
.setDeviceType(loginParameter.getDeviceType())
|
||||
.setDeviceId(loginParameter.getDeviceId())
|
||||
.setTokenValue(tokenValue)
|
||||
.setTag(loginParameter.getTerminalTag())
|
||||
.setExtraData(loginParameter.getTerminalExtraData())
|
||||
.setCreateTime(System.currentTimeMillis());
|
||||
session.addTerminal(terminalInfo);
|
||||
|
||||
|
@@ -26,7 +26,7 @@
|
||||
<module>sa-token-demo-oauth2/sa-token-demo-oauth2-client</module>
|
||||
<module>sa-token-demo-quick-login</module>
|
||||
<module>sa-token-demo-remember-me/sa-token-demo-remember-me-server</module>
|
||||
<!-- <module>sa-token-demo-solon</module>-->
|
||||
<module>sa-token-demo-solon</module>
|
||||
<module>sa-token-demo-solon-redisson</module>
|
||||
<module>sa-token-demo-springboot</module>
|
||||
<module>sa-token-demo-springboot3-redis</module>
|
||||
|
@@ -31,6 +31,10 @@ public class TestController {
|
||||
.setIsShare(false)
|
||||
.setMaxLoginCount(4)
|
||||
.setMaxTryTimes(12)
|
||||
.setTerminalExtra("deviceSimpleTitle", "XiaoMi 15 Ultra")
|
||||
.setTerminalExtra("loginAddress", "浙江省杭州市西湖区")
|
||||
.setTerminalExtra("loginIp", "127.0.0.1")
|
||||
.setTerminalExtra("loginTime", SaFoxUtil.formatDate(new Date()))
|
||||
);
|
||||
return SaResult.ok("登录成功");
|
||||
}
|
||||
|
Reference in New Issue
Block a user