diff --git a/README.md b/README.md
index b9f7e604..254be858 100644
--- a/README.md
+++ b/README.md
@@ -57,7 +57,7 @@ sa-token是一个轻量级Java权限认证框架,主要解决:登录认证
总的来说,与其它权限认证框架相比,你将会从以下方面感受到 `sa-token` 的优势:
1. **简单** :可零配置启动框架,真正的开箱即用,低成本上手
2. **强大** :目前已集成几十项权限相关特性,涵盖了大部分业务场景的解决方案
-3. **易用** :如丝版顺滑的API调用,大量高级特性统统只需一行代码即可实现
+3. **易用** :如丝般顺滑的API调用,大量高级特性统统只需一行代码即可实现
4. **高扩展** :几乎所有组件都提供了扩展接口,90%以上的逻辑都可以按需重写
有了sa-token,你所有的权限认证问题,都不再是问题!
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
index 06abe2b6..c4abc0fa 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
@@ -46,9 +46,14 @@ public class SaTokenConfig {
/** 获取[token专属session]时是否必须登录 (如果配置为true,会在每次获取[token-session]时校验是否登录) */
private Boolean tokenSessionCheckLogin = true;
+ /** 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作) */
+ private Boolean autoRenew = true;
+
/** 是否在初始化配置时打印版本字符画 */
private Boolean isV = true;
+
+
/**
* @return token名称 (同时也是cookie名称)
*/
@@ -207,6 +212,20 @@ public class SaTokenConfig {
this.tokenSessionCheckLogin = tokenSessionCheckLogin;
}
+ /**
+ * @return 是否打开了自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作)
+ */
+ public Boolean getAutoRenew() {
+ return autoRenew;
+ }
+
+ /**
+ * @param autoRenew 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作)
+ */
+ public void setAutoRenew(Boolean autoRenew) {
+ this.autoRenew = autoRenew;
+ }
+
/**
* @return 是否在初始化配置时打印版本字符画
*/
@@ -221,13 +240,20 @@ public class SaTokenConfig {
this.isV = isV;
}
+
+ /**
+ * toString
+ */
@Override
public String toString() {
return "SaTokenConfig [tokenName=" + tokenName + ", timeout=" + timeout + ", activityTimeout=" + activityTimeout
+ ", allowConcurrentLogin=" + allowConcurrentLogin + ", isShare=" + isShare + ", isReadBody="
+ isReadBody + ", isReadHead=" + isReadHead + ", isReadCookie=" + isReadCookie + ", tokenStyle="
+ tokenStyle + ", dataRefreshPeriod=" + dataRefreshPeriod + ", tokenSessionCheckLogin="
- + tokenSessionCheckLogin + ", isV=" + isV + "]";
+ + tokenSessionCheckLogin + ", autoRenew=" + autoRenew + ", isV=" + isV + "]";
}
+
+
+
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
index 54152485..43f29868 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
@@ -345,9 +345,11 @@ public class StpLogic {
if(loginId.equals(NotLoginException.KICK_OUT)) {
throw NotLoginException.newInstance(loginKey, NotLoginException.KICK_OUT);
}
- // 检查是否已经 [临时过期],同时更新[最后操作时间]
- checkActivityTimeout(tokenValue);
- updateLastActivityToNow(tokenValue);
+ // 如果配置了自动续签, 则: 检查是否已经 [临时过期],同时更新[最后操作时间]
+ if(getConfig().getAutoRenew()) {
+ checkActivityTimeout(tokenValue);
+ updateLastActivityToNow(tokenValue);
+ }
// 至此,返回loginId
return loginId;
}
@@ -961,7 +963,7 @@ public class StpLogic {
return null;
}
// 如果session为null的话直接返回 null
- SaSession session = getSession(false);
+ SaSession session = getSessionByLoginId(getLoginIdDefaultNull(), false);
if(session == null) {
return null;
}
diff --git a/sa-token-demo-springboot/pom.xml b/sa-token-demo-springboot/pom.xml
index 2d90bbc1..042315a9 100644
--- a/sa-token-demo-springboot/pom.xml
+++ b/sa-token-demo-springboot/pom.xml
@@ -73,11 +73,6 @@
+