提交 5dd02b35 编写于 作者: shengzhang_'s avatar shengzhang_

新增`autoRenew`配置,用于控制是否打开自动续签模式

上级 b211de69
......@@ -57,7 +57,7 @@ sa-token是一个轻量级Java权限认证框架,主要解决:登录认证
总的来说,与其它权限认证框架相比,你将会从以下方面感受到 `sa-token` 的优势:
1. **简单** :可零配置启动框架,真正的开箱即用,低成本上手
2. **强大** :目前已集成几十项权限相关特性,涵盖了大部分业务场景的解决方案
3. **易用** :如丝顺滑的API调用,大量高级特性统统只需一行代码即可实现
3. **易用** :如丝顺滑的API调用,大量高级特性统统只需一行代码即可实现
4. **高扩展** :几乎所有组件都提供了扩展接口,90%以上的逻辑都可以按需重写
有了sa-token,你所有的权限认证问题,都不再是问题!
......
......@@ -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 + "]";
}
}
......@@ -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;
}
......
......@@ -73,11 +73,6 @@
<version>5.5.4</version>
</dependency> -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
</dependencies>
......
......@@ -247,6 +247,7 @@ public class TestController {
public AjaxJson test() {
// StpUtil.getTokenSession().logout();
// StpUtil.logoutByLoginId(10001);
StpUtil.getLoginId();
return AjaxJson.getSuccess();
}
......
**<p align="center">
<p align="center">
<img alt="logo" src="https://gitee.com/sz6/sa-token/raw/master/sa-token-doc/doc/logo.png" width="150" height="150">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">sa-token v1.12.1</h1>
......@@ -45,7 +45,7 @@ sa-token是一个轻量级Java权限认证框架,主要解决:登录认证
秉承着这个目的,`sa-token` 诞生了!
## 架构设计
## 框架优点?
在架构设计上,`sa-token`拒绝引入复杂的概念,以实际业务需求为第一目标,业务上需要什么,sa-token就做什么,
例如:踢人下线、自动续签、同端互斥登录等常见业务,均可以在框架内**一行代码调用实现**,简单粗暴,拒绝复杂!
......@@ -57,8 +57,8 @@ sa-token是一个轻量级Java权限认证框架,主要解决:登录认证
总的来说,与其它权限认证框架相比,你将会从以下方面感受到 `sa-token` 的优势:
1. **简单** :可零配置启动框架,真正的开箱即用,低成本上手
2. **强大** :目前已集成几十项权限相关特性,涵盖了大部分业务场景的解决方案
3. **易用**同样的一个功能,在别的框架中可能需要上百行代码,在sa-token中统统一行代码解决
4. **高扩展**框架中几乎所有组件都提供了扩展接口,90%以上的逻辑都可以按需重写
3. **易用**如丝般顺滑的API调用,大量高级特性统统只需一行代码即可实现
4. **高扩展** :几乎所有组件都提供了扩展接口,90%以上的逻辑都可以按需重写
有了sa-token,你所有的权限认证问题,都不再是问题!
......@@ -206,12 +206,10 @@ sa-token秉承着开放的思想,欢迎大家贡献代码,为框架添砖加
## 交流群
QQ交流群:[1002350610 点击加入](https://jq.qq.com/?_wv=1027&k=45H977HM)
![扫码加群](https://color-test.oss-cn-qingdao.aliyuncs.com/sa-token/qq-group.png ':size=150')
**微信群**
![微信群](https://images.gitee.com/uploads/images/2021/0129/183207_4ad97c40_1766140.jpeg "sa-token-wx.jpg")
![微信群](https://images.gitee.com/uploads/images/2021/0204/121632_63ee1287_1766140.png "sa-token-wx.jpg")
<br>
**
\ No newline at end of file
<br>
\ No newline at end of file
......@@ -38,6 +38,8 @@
StpUtil.updateLastActivityToNow();
```
同时,你还可以关闭框架的自动续签(在配置文件中配置 `autoRenew=false` ),此时续签操作完全由开发者控制,框架不再自动进行任何续签操作
### timeout与activity-timeout可以同时使用吗?
**可以同时使用!**
......
......@@ -71,4 +71,5 @@ spring:
| tokenStyle | String | uuid | token风格, [参考:花式token](/use/token-style) |
| dataRefreshPeriod | int | 30 | 默认dao层实现类中,每次清理过期数据间隔的时间 (单位: 秒) ,默认值30秒,设置为-1代表不启动定时清理 |
| tokenSessionCheckLogin | Boolean | true | 获取token专属session时是否必须登录 (如果配置为true,会在每次获取token专属session时校验是否登录) |
| autoRenew | Boolean | true | 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作) |
| isV | Boolean | true | 是否在初始化配置时打印版本字符画 |
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册