mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-19 01:58:05 +08:00
新增登录时动态指定 active-timeout 能力
This commit is contained in:
@@ -2,19 +2,19 @@
|
||||
server:
|
||||
port: 8081
|
||||
|
||||
# sa-token配置
|
||||
# sa-token 配置
|
||||
sa-token:
|
||||
# token名称 (同时也是cookie名称)
|
||||
# token 名称 (同时也是 cookie 名称)
|
||||
token-name: satoken
|
||||
# token有效期,单位s 默认30天, -1代表永不过期
|
||||
# token 有效期(单位:秒) 默认30天,-1 代表永久有效
|
||||
timeout: 2592000
|
||||
# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
|
||||
activity-timeout: -1
|
||||
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
|
||||
# token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
|
||||
active-timeout: -1
|
||||
# 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
|
||||
is-concurrent: true
|
||||
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
|
||||
# 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
|
||||
is-share: true
|
||||
# token风格
|
||||
# token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
|
||||
token-style: uuid
|
||||
# jwt秘钥
|
||||
jwt-secret-key: asdasdasifhueuiwyurfewbfjsdafjk
|
||||
|
@@ -41,8 +41,8 @@ public class SaTokenConfigTest {
|
||||
config.setTimeout(100204);
|
||||
Assertions.assertEquals(config.getTimeout(), 100204);
|
||||
|
||||
config.setActivityTimeout(1804);
|
||||
Assertions.assertEquals(config.getActivityTimeout(), 1804);
|
||||
config.setActiveTimeout(1804);
|
||||
Assertions.assertEquals(config.getActiveTimeout(), 1804);
|
||||
|
||||
config.setIsConcurrent(false);
|
||||
Assertions.assertEquals(config.getIsConcurrent(), false);
|
||||
@@ -111,7 +111,7 @@ public class SaTokenConfigTest {
|
||||
SaTokenConfig config = SaTokenConfigFactory.createConfig("sa-token2.properties");
|
||||
Assertions.assertEquals(config.getTokenName(), "use-token");
|
||||
Assertions.assertEquals(config.getTimeout(), 9000);
|
||||
Assertions.assertEquals(config.getActivityTimeout(), 240);
|
||||
Assertions.assertEquals(config.getActiveTimeout(), 240);
|
||||
Assertions.assertEquals(config.getIsConcurrent(), false);
|
||||
Assertions.assertEquals(config.getIsShare(), false);
|
||||
Assertions.assertEquals(config.getIsLog(), true);
|
||||
|
@@ -45,7 +45,7 @@ public class TokenInfoTest {
|
||||
info.setTokenTimeout(1800);
|
||||
info.setSessionTimeout(120);
|
||||
info.setTokenSessionTimeout(1800);
|
||||
info.setTokenActivityTimeout(120);
|
||||
info.setTokenActiveTimeout(120);
|
||||
info.setLoginDevice("PC");
|
||||
info.setTag("xxx");
|
||||
|
||||
@@ -57,7 +57,7 @@ public class TokenInfoTest {
|
||||
Assertions.assertEquals(info.getTokenTimeout(), 1800);
|
||||
Assertions.assertEquals(info.getSessionTimeout(), 120);
|
||||
Assertions.assertEquals(info.getTokenSessionTimeout(), 1800);
|
||||
Assertions.assertEquals(info.getTokenActivityTimeout(), 120);
|
||||
Assertions.assertEquals(info.getTokenActiveTimeout(), 120);
|
||||
Assertions.assertEquals(info.getLoginDevice(), "PC");
|
||||
Assertions.assertEquals(info.getTag(), "xxx");
|
||||
|
||||
|
@@ -75,7 +75,7 @@ public class BasicsTest {
|
||||
@BeforeAll
|
||||
public static void beforeClass() {
|
||||
System.out.println("\n\n------------------------ 基础测试 star ...");
|
||||
SaManager.getConfig().setActivityTimeout(180);
|
||||
SaManager.getConfig().setActiveTimeout(180);
|
||||
}
|
||||
|
||||
// 结束
|
||||
@@ -710,20 +710,20 @@ public class BasicsTest {
|
||||
Assertions.assertEquals(tokenSession.get("code"), "123456");
|
||||
}
|
||||
|
||||
// 测试,临时过期
|
||||
// 测试,token 最低活跃频率
|
||||
@Test
|
||||
public void testActivityTimeout() {
|
||||
public void testActiveTimeout() {
|
||||
// 登录
|
||||
StpUtil.login(10001);
|
||||
Assertions.assertNotNull(StpUtil.getTokenValue());
|
||||
|
||||
// 默认跟随全局 timeout
|
||||
StpUtil.updateLastActivityToNow();
|
||||
long activityTimeout = StpUtil.getTokenActivityTimeout();
|
||||
Assertions.assertTrue(activityTimeout <=180 || activityTimeout >=179);
|
||||
StpUtil.updateLastActiveToNow();
|
||||
long activeTimeout = StpUtil.getTokenActiveTimeout();
|
||||
Assertions.assertTrue(activeTimeout <=180 || activeTimeout >=179);
|
||||
|
||||
// 不会抛出异常
|
||||
Assertions.assertDoesNotThrow(() -> StpUtil.checkActivityTimeout());
|
||||
Assertions.assertDoesNotThrow(() -> StpUtil.checkActiveTimeout());
|
||||
}
|
||||
|
||||
// 测试,上下文 API
|
||||
|
@@ -1,12 +1,12 @@
|
||||
# token名称 (同时也是cookie名称)
|
||||
# token 名称 (同时也是 cookie 名称)
|
||||
tokenName=use-token
|
||||
# token有效期,单位s 默认30天, -1代表永不过期
|
||||
# token 有效期(单位:秒) 默认30天,-1 代表永久有效
|
||||
timeout=9000
|
||||
# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
|
||||
activityTimeout=240
|
||||
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) =-1
|
||||
# token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
|
||||
activeTimeout=240
|
||||
# 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
|
||||
isConcurrent=false
|
||||
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
|
||||
# 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
|
||||
isShare=false
|
||||
# token风格
|
||||
isLog=true
|
||||
# 是否输出操作日志
|
||||
isLog=true
|
Reference in New Issue
Block a user