添加token专有session

This commit is contained in:
shengzhang
2020-12-27 22:47:00 +08:00
parent 20f6bd7b3d
commit a59ee9408b
5 changed files with 114 additions and 4 deletions

View File

@@ -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 + "]";
}

View File

@@ -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值

View File

@@ -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();
}
// =================== [临时过期] 验证相关 ===================