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 57cfc2c3..0ea61b51 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 @@ -486,15 +486,21 @@ public class StpLogic { setLastActiveToNow(tokenValue, loginModel.getActiveTimeout(), loginModel.getTimeoutOrGlobalConfig()); } - // 8、$$ 发布全局事件:账号 xxx 登录成功 + // 8、如果该 token 对应的 Token-Session 已经存在,则需要给其续期 + SaSession tokenSession = getTokenSessionByToken(tokenValue, false); + if(tokenSession != null) { + tokenSession.updateMinTimeout(loginModel.getTimeout()); + } + + // 9、$$ 发布全局事件:账号 xxx 登录成功 SaTokenEventCenter.doLogin(loginType, id, tokenValue, loginModel); - // 9、检查此账号会话数量是否超出最大值,如果超过,则按照登录时间顺序,把最开始登录的给注销掉 + // 10、检查此账号会话数量是否超出最大值,如果超过,则按照登录时间顺序,把最开始登录的给注销掉 if(config.getMaxLoginCount() != -1) { logoutByMaxLoginCount(id, session, null, config.getMaxLoginCount()); } - // 10、一切处理完毕,返回会话凭证 token + // 11、一切处理完毕,返回会话凭证 token return tokenValue; } diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/Test2Controller.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/Test2Controller.java index 7b418278..397617ac 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/Test2Controller.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/Test2Controller.java @@ -1,5 +1,6 @@ package com.pj.test; +import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -12,11 +13,15 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class Test2Controller { - // 测试登录 ---- http://localhost:8081/.test - @RequestMapping("/.test") + // 测试登录 ---- http://localhost:8081/test + @RequestMapping("/test") public SaResult test2() { - System.out.println("--- 进来了"); - return SaResult.ok("登录成功"); + + StpUtil.login(30003); + System.out.println(StpUtil.getSession().getTimeout()); + System.out.println(StpUtil.getStpLogic().getTokenSession(false)); + + return SaResult.ok(); } }