mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-19 18:22:15 +08:00
添加token专有session
This commit is contained in:
@@ -28,6 +28,13 @@ public class SaTokenInfo {
|
||||
/** session剩余有效时间 (单位: 秒) */
|
||||
public long sessionTimeout;
|
||||
|
||||
/** token专属session剩余有效时间 (单位: 秒) */
|
||||
public long tokenSessionTimeout;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* token剩余无操作有效时间
|
||||
*/
|
||||
@@ -146,6 +153,21 @@ public class SaTokenInfo {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return tokenSessionTimeout
|
||||
*/
|
||||
public long getTokenSessionTimeout() {
|
||||
return tokenSessionTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param tokenSessionTimeout 要设置的 tokenSessionTimeout
|
||||
*/
|
||||
public SaTokenInfo setTokenSessionTimeout(long tokenSessionTimeout) {
|
||||
this.tokenSessionTimeout = tokenSessionTimeout;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return tokenActivityTimeout
|
||||
*/
|
||||
@@ -169,8 +191,11 @@ public class SaTokenInfo {
|
||||
public String toString() {
|
||||
return "SaTokenInfo [tokenName=" + tokenName + ", tokenValue=" + tokenValue + ", isLogin=" + isLogin
|
||||
+ ", loginId=" + loginId + ", loginKey=" + loginKey + ", tokenTimeout=" + tokenTimeout
|
||||
+ ", sessionTimeout=" + sessionTimeout + ", tokenActivityTimeout=" + tokenActivityTimeout + "]";
|
||||
+ ", sessionTimeout=" + sessionTimeout + ", tokenSessionTimeout=" + tokenSessionTimeout
|
||||
+ ", tokenActivityTimeout=" + tokenActivityTimeout + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -119,6 +119,7 @@ public class StpLogic {
|
||||
info.loginKey = getLoginKey();
|
||||
info.tokenTimeout = getTokenTimeout();
|
||||
info.sessionTimeout = getSessionTimeout();
|
||||
info.tokenSessionTimeout = getTokenSessionTimeout();
|
||||
info.tokenActivityTimeout = getTokenActivityTimeout();
|
||||
return info;
|
||||
}
|
||||
@@ -382,7 +383,7 @@ public class StpLogic {
|
||||
* @param isCreate 是否新建
|
||||
* @return session对象
|
||||
*/
|
||||
protected SaSession getSessionBySessionId(String sessionId, boolean isCreate) {
|
||||
public SaSession getSessionBySessionId(String sessionId, boolean isCreate) {
|
||||
SaSession session = SaTokenManager.getSaTokenDao().getSession(sessionId);
|
||||
if(session == null && isCreate) {
|
||||
session = new SaSession(sessionId);
|
||||
@@ -427,6 +428,27 @@ public class StpLogic {
|
||||
return getSession(true);
|
||||
}
|
||||
|
||||
// ---------- token专属session
|
||||
|
||||
/**
|
||||
* 获取指定token的专属session,如果session尚未创建,则新建并返回
|
||||
* @param tokenValue token值
|
||||
* @return session会话
|
||||
*/
|
||||
public SaSession getTokenSessionByToken(String tokenValue) {
|
||||
return getSessionBySessionId(getKeyTokenSession(tokenValue), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前token的专属-session,如果session尚未创建,则新建并返回
|
||||
* <p> 只有当前会话属于登录状态才可调用
|
||||
* @return session会话
|
||||
*/
|
||||
public SaSession getTokenSession() {
|
||||
checkLogin();
|
||||
return getTokenSessionByToken(getTokenValue());
|
||||
}
|
||||
|
||||
|
||||
// =================== [临时过期] 验证相关 ===================
|
||||
|
||||
@@ -555,6 +577,24 @@ public class StpLogic {
|
||||
return SaTokenManager.getSaTokenDao().getSessionTimeout(getKeySession(loginId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前token的专属Session剩余有效时间 (单位: 秒)
|
||||
* @return token剩余有效时间
|
||||
*/
|
||||
public long getTokenSessionTimeout() {
|
||||
return getTokenSessionTimeoutByTokenValue(getTokenValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定token的专属Session剩余有效时间 (单位: 秒)
|
||||
* @param tokenValue 指定token
|
||||
* @return token剩余有效时间
|
||||
*/
|
||||
public long getTokenSessionTimeoutByTokenValue(String tokenValue) {
|
||||
return SaTokenManager.getSaTokenDao().getSessionTimeout(getKeyTokenSession(tokenValue));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取当前token[临时过期]剩余有效时间 (单位: 秒)
|
||||
* @return token[临时过期]剩余有效时间
|
||||
@@ -596,6 +636,7 @@ public class StpLogic {
|
||||
return timeout;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// =================== 权限验证操作 ===================
|
||||
|
||||
@@ -694,6 +735,14 @@ public class StpLogic {
|
||||
public String getKeySession(Object loginId) {
|
||||
return SaTokenManager.getConfig().getTokenName() + ":" + loginKey + ":session:" + loginId;
|
||||
}
|
||||
/**
|
||||
* 获取key: tokenValue的专属session
|
||||
* @param tokenValue token值
|
||||
* @return key
|
||||
*/
|
||||
public String getKeyTokenSession(String tokenValue) {
|
||||
return SaTokenManager.getConfig().getTokenName() + ":" + loginKey + ":token-session:" + tokenValue;
|
||||
}
|
||||
/**
|
||||
* 获取key: 指定token的最后操作时间 持久化
|
||||
* @param tokenValue token值
|
||||
|
@@ -207,6 +207,26 @@ public class StpUtil {
|
||||
return stpLogic.getSession();
|
||||
}
|
||||
|
||||
// ---------- token专属session
|
||||
|
||||
/**
|
||||
* 获取指定token的专属session,如果session尚未创建,则新建并返回
|
||||
* @param tokenValue token值
|
||||
* @return session会话
|
||||
*/
|
||||
public static SaSession getTokenSessionByToken(String tokenValue) {
|
||||
return stpLogic.getTokenSessionByToken(tokenValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前token的专属-session,如果session尚未创建,则新建并返回
|
||||
* <p> 只有当前会话属于登录状态才可调用
|
||||
* @return session会话
|
||||
*/
|
||||
public static SaSession getTokenSession() {
|
||||
return stpLogic.getTokenSession();
|
||||
}
|
||||
|
||||
|
||||
// =================== [临时过期] 验证相关 ===================
|
||||
|
||||
|
Reference in New Issue
Block a user