mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-20 02:29:27 +08:00
添加token专有session
This commit is contained in:
@@ -28,6 +28,13 @@ public class SaTokenInfo {
|
|||||||
/** session剩余有效时间 (单位: 秒) */
|
/** session剩余有效时间 (单位: 秒) */
|
||||||
public long sessionTimeout;
|
public long sessionTimeout;
|
||||||
|
|
||||||
|
/** token专属session剩余有效时间 (单位: 秒) */
|
||||||
|
public long tokenSessionTimeout;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* token剩余无操作有效时间
|
* token剩余无操作有效时间
|
||||||
*/
|
*/
|
||||||
@@ -146,6 +153,21 @@ public class SaTokenInfo {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return tokenSessionTimeout
|
||||||
|
*/
|
||||||
|
public long getTokenSessionTimeout() {
|
||||||
|
return tokenSessionTimeout;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param tokenSessionTimeout 要设置的 tokenSessionTimeout
|
||||||
|
*/
|
||||||
|
public SaTokenInfo setTokenSessionTimeout(long tokenSessionTimeout) {
|
||||||
|
this.tokenSessionTimeout = tokenSessionTimeout;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return tokenActivityTimeout
|
* @return tokenActivityTimeout
|
||||||
*/
|
*/
|
||||||
@@ -169,7 +191,8 @@ public class SaTokenInfo {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return "SaTokenInfo [tokenName=" + tokenName + ", tokenValue=" + tokenValue + ", isLogin=" + isLogin
|
return "SaTokenInfo [tokenName=" + tokenName + ", tokenValue=" + tokenValue + ", isLogin=" + isLogin
|
||||||
+ ", loginId=" + loginId + ", loginKey=" + loginKey + ", tokenTimeout=" + tokenTimeout
|
+ ", loginId=" + loginId + ", loginKey=" + loginKey + ", tokenTimeout=" + tokenTimeout
|
||||||
+ ", sessionTimeout=" + sessionTimeout + ", tokenActivityTimeout=" + tokenActivityTimeout + "]";
|
+ ", sessionTimeout=" + sessionTimeout + ", tokenSessionTimeout=" + tokenSessionTimeout
|
||||||
|
+ ", tokenActivityTimeout=" + tokenActivityTimeout + "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -184,4 +207,6 @@ public class SaTokenInfo {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -119,6 +119,7 @@ public class StpLogic {
|
|||||||
info.loginKey = getLoginKey();
|
info.loginKey = getLoginKey();
|
||||||
info.tokenTimeout = getTokenTimeout();
|
info.tokenTimeout = getTokenTimeout();
|
||||||
info.sessionTimeout = getSessionTimeout();
|
info.sessionTimeout = getSessionTimeout();
|
||||||
|
info.tokenSessionTimeout = getTokenSessionTimeout();
|
||||||
info.tokenActivityTimeout = getTokenActivityTimeout();
|
info.tokenActivityTimeout = getTokenActivityTimeout();
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
@@ -382,7 +383,7 @@ public class StpLogic {
|
|||||||
* @param isCreate 是否新建
|
* @param isCreate 是否新建
|
||||||
* @return session对象
|
* @return session对象
|
||||||
*/
|
*/
|
||||||
protected SaSession getSessionBySessionId(String sessionId, boolean isCreate) {
|
public SaSession getSessionBySessionId(String sessionId, boolean isCreate) {
|
||||||
SaSession session = SaTokenManager.getSaTokenDao().getSession(sessionId);
|
SaSession session = SaTokenManager.getSaTokenDao().getSession(sessionId);
|
||||||
if(session == null && isCreate) {
|
if(session == null && isCreate) {
|
||||||
session = new SaSession(sessionId);
|
session = new SaSession(sessionId);
|
||||||
@@ -427,6 +428,27 @@ public class StpLogic {
|
|||||||
return getSession(true);
|
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));
|
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[临时过期]剩余有效时间 (单位: 秒)
|
* 获取当前token[临时过期]剩余有效时间 (单位: 秒)
|
||||||
* @return token[临时过期]剩余有效时间
|
* @return token[临时过期]剩余有效时间
|
||||||
@@ -597,6 +637,7 @@ public class StpLogic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// =================== 权限验证操作 ===================
|
// =================== 权限验证操作 ===================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -694,6 +735,14 @@ public class StpLogic {
|
|||||||
public String getKeySession(Object loginId) {
|
public String getKeySession(Object loginId) {
|
||||||
return SaTokenManager.getConfig().getTokenName() + ":" + loginKey + ":session:" + 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的最后操作时间 持久化
|
* 获取key: 指定token的最后操作时间 持久化
|
||||||
* @param tokenValue token值
|
* @param tokenValue token值
|
||||||
|
@@ -207,6 +207,26 @@ public class StpUtil {
|
|||||||
return stpLogic.getSession();
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// =================== [临时过期] 验证相关 ===================
|
// =================== [临时过期] 验证相关 ===================
|
||||||
|
|
||||||
|
@@ -33,11 +33,11 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- sa-token 整合 redis -->
|
<!-- sa-token 整合 redis -->
|
||||||
<!-- <dependency>
|
<dependency>
|
||||||
<groupId>cn.dev33</groupId>
|
<groupId>cn.dev33</groupId>
|
||||||
<artifactId>sa-token-dao-redis</artifactId>
|
<artifactId>sa-token-dao-redis</artifactId>
|
||||||
<version>1.7.0</version>
|
<version>1.7.0</version>
|
||||||
</dependency> -->
|
</dependency>
|
||||||
|
|
||||||
<!-- @ConfigurationProperties -->
|
<!-- @ConfigurationProperties -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@@ -95,6 +95,22 @@ public class TestController {
|
|||||||
return AjaxJson.getSuccess();
|
return AjaxJson.getSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------
|
||||||
|
// 测试token专属session, 浏览器访问: http://localhost:8081/test/getTokenSession
|
||||||
|
@RequestMapping("getTokenSession")
|
||||||
|
public AjaxJson getTokenSession() {
|
||||||
|
System.out.println("======================= 进入方法,测试会话session接口 ========================= ");
|
||||||
|
System.out.println("当前是否登录:" + StpUtil.isLogin());
|
||||||
|
System.out.println("当前token专属session: " + StpUtil.getTokenSession().getId());
|
||||||
|
|
||||||
|
System.out.println("测试取值name:" + StpUtil.getTokenSession().getAttribute("name"));
|
||||||
|
StpUtil.getTokenSession().setAttribute("name", "张三"); // 写入一个值
|
||||||
|
System.out.println("测试取值name:" + StpUtil.getTokenSession().getAttribute("name"));
|
||||||
|
|
||||||
|
return AjaxJson.getSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 打印当前token信息, 浏览器访问: http://localhost:8081/test/tokenInfo
|
// 打印当前token信息, 浏览器访问: http://localhost:8081/test/tokenInfo
|
||||||
@RequestMapping("tokenInfo")
|
@RequestMapping("tokenInfo")
|
||||||
public AjaxJson tokenInfo() {
|
public AjaxJson tokenInfo() {
|
||||||
|
Reference in New Issue
Block a user