diff --git a/README.md b/README.md index e9e8a1dd..e8b4f245 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@

logo

-

sa-token v1.9.0

+

sa-token v1.10.0

一个JavaWeb轻量级权限认证框架,功能全面,上手简单

- + diff --git a/pom.xml b/pom.xml index 1e595910..00a80521 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ cn.dev33 sa-token-parent pom - 1.9.0 + 1.10.0 sa-token diff --git a/sa-token-core/pom.xml b/sa-token-core/pom.xml index ad96cd6f..ffc52764 100644 --- a/sa-token-core/pom.xml +++ b/sa-token-core/pom.xml @@ -7,7 +7,7 @@ cn.dev33 sa-token-parent - 1.9.0 + 1.10.0 jar diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java index a5704f65..dd8dff47 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java @@ -10,7 +10,7 @@ public class SaTokenConsts { /** * sa-token 版本号 */ - public static final String VERSION_NO = "v1.9.0"; + public static final String VERSION_NO = "v1.10.0"; /** * sa-token 开源地址 diff --git a/sa-token-dao-redis-jackson/pom.xml b/sa-token-dao-redis-jackson/pom.xml index 5adde229..6fdfecd5 100644 --- a/sa-token-dao-redis-jackson/pom.xml +++ b/sa-token-dao-redis-jackson/pom.xml @@ -7,7 +7,7 @@ cn.dev33 sa-token-parent - 1.9.0 + 1.10.0 jar @@ -20,7 +20,7 @@ cn.dev33 sa-token-spring-boot-starter - 1.9.0 + 1.10.0 diff --git a/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java b/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java index 7292c40a..4ce74064 100644 --- a/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java +++ b/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java @@ -124,6 +124,17 @@ public class SaTokenDaoRedisJackson implements SaTokenDao { */ @Override public void updateTimeout(String key, long timeout) { + // 判断是否想要设置为永久 + if(timeout == SaTokenDao.NEVER_EXPIRE) { + long expire = getTimeout(key); + if(expire == SaTokenDao.NEVER_EXPIRE) { + // 如果其已经被设置为永久,则不作任何处理 + } else { + // 如果尚未被设置为永久,那么再次set一次 + this.setValue(key, this.getValue(key), timeout); + } + return; + } stringRedisTemplate.expire(key, timeout, TimeUnit.SECONDS); } @@ -183,6 +194,17 @@ public class SaTokenDaoRedisJackson implements SaTokenDao { */ @Override public void updateSessionTimeout(String sessionId, long timeout) { + // 判断是否想要设置为永久 + if(timeout == SaTokenDao.NEVER_EXPIRE) { + long expire = getSessionTimeout(sessionId); + if(expire == SaTokenDao.NEVER_EXPIRE) { + // 如果其已经被设置为永久,则不作任何处理 + } else { + // 如果尚未被设置为永久,那么再次set一次 + this.saveSession(this.getSession(sessionId), timeout); + } + return; + } sessionRedisTemplate.expire(sessionId, timeout, TimeUnit.SECONDS); } diff --git a/sa-token-dao-redis/pom.xml b/sa-token-dao-redis/pom.xml index 9d5f072b..0cddcdcd 100644 --- a/sa-token-dao-redis/pom.xml +++ b/sa-token-dao-redis/pom.xml @@ -7,7 +7,7 @@ cn.dev33 sa-token-parent - 1.9.0 + 1.10.0 jar @@ -20,7 +20,7 @@ cn.dev33 sa-token-spring-boot-starter - 1.9.0 + 1.10.0 diff --git a/sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java b/sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java index 266d0c96..35e6ae18 100644 --- a/sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java +++ b/sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java @@ -105,6 +105,17 @@ public class SaTokenDaoRedis implements SaTokenDao { */ @Override public void updateTimeout(String key, long timeout) { + // 判断是否想要设置为永久 + if(timeout == SaTokenDao.NEVER_EXPIRE) { + long expire = getTimeout(key); + if(expire == SaTokenDao.NEVER_EXPIRE) { + // 如果其已经被设置为永久,则不作任何处理 + } else { + // 如果尚未被设置为永久,那么再次set一次 + this.setValue(key, this.getValue(key), timeout); + } + return; + } stringRedisTemplate.expire(key, timeout, TimeUnit.SECONDS); } @@ -164,6 +175,17 @@ public class SaTokenDaoRedis implements SaTokenDao { */ @Override public void updateSessionTimeout(String sessionId, long timeout) { + // 判断是否想要设置为永久 + if(timeout == SaTokenDao.NEVER_EXPIRE) { + long expire = getSessionTimeout(sessionId); + if(expire == SaTokenDao.NEVER_EXPIRE) { + // 如果其已经被设置为永久,则不作任何处理 + } else { + // 如果尚未被设置为永久,那么再次set一次 + this.saveSession(this.getSession(sessionId), timeout); + } + return; + } sessionRedisTemplate.expire(sessionId, timeout, TimeUnit.SECONDS); } diff --git a/sa-token-demo-springboot/pom.xml b/sa-token-demo-springboot/pom.xml index 09bb81d1..2841c58e 100644 --- a/sa-token-demo-springboot/pom.xml +++ b/sa-token-demo-springboot/pom.xml @@ -29,21 +29,21 @@ cn.dev33 sa-token-spring-boot-starter - 1.9.0 + 1.10.0 diff --git a/sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java b/sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java index 640d65dd..f0151e16 100644 --- a/sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java +++ b/sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java @@ -27,13 +27,17 @@ public class StressTestController { public AjaxJson login() { // StpUtil.getTokenSession().logout(); // StpUtil.logoutByLoginId(10001); + + int count = 10; // 循环多少轮 + int loginCount = 10000; // 每轮循环多少次 + // 循环10次 取平均时间 List list = new ArrayList<>(); - for (int i = 10; i <= 1; i++) { + for (int i = 1; i <= count; i++) { System.out.println("\n---------------------第" + i + "轮---------------------"); Ttime t = new Ttime().start(); // 每次登录的次数 - for (int j = 1; j <= 10000; j++) { + for (int j = 1; j <= loginCount; j++) { StpUtil.setLoginId("1000" + j, "PC-" + j); if(j % 1000 == 0) { System.out.println("已登录:" + j); diff --git a/sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java b/sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java index 7e3896d2..bb3aceef 100644 --- a/sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java @@ -203,13 +203,12 @@ public class TestController { } - // 测试 浏览器访问: http://localhost:8081/test/searchSession - // 测试前,请先将 is-read-cookie 配置为 false - @RequestMapping("searchSession") - public AjaxJson searchSession() { + // 测试会话治理 浏览器访问: http://localhost:8081/test/search + @RequestMapping("search") + public AjaxJson search() { System.out.println("--------------"); Ttime t = new Ttime().start(); - List tokenValue = StpUtil.searchTokenValue("", 0, 10); + List tokenValue = StpUtil.searchTokenValue("8feb8265f773", 0, 10); for (String v : tokenValue) { // SaSession session = StpUtil.getSessionBySessionId(sid); System.out.println(v); diff --git a/sa-token-demo-springboot/src/main/resources/application.yml b/sa-token-demo-springboot/src/main/resources/application.yml index 57c1bcd0..6aebe709 100644 --- a/sa-token-demo-springboot/src/main/resources/application.yml +++ b/sa-token-demo-springboot/src/main/resources/application.yml @@ -8,7 +8,7 @@ spring: # token名称 (同时也是cookie名称) token-name: satoken # token有效期,单位s 默认30天, -1代表永不过期 - timeout: 2592000 + timeout: -1 # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒 activity-timeout: -1 # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) @@ -18,8 +18,6 @@ spring: # token风格 token-style: uuid - # 是否从cookie里读取token - # is-read-cookie: false # redis配置 diff --git a/sa-token-doc/doc/README.md b/sa-token-doc/doc/README.md index e9e8a1dd..41f6977a 100644 --- a/sa-token-doc/doc/README.md +++ b/sa-token-doc/doc/README.md @@ -1,11 +1,11 @@

logo

-

sa-token v1.9.0

+

sa-token v1.10.0

一个JavaWeb轻量级权限认证框架,功能全面,上手简单

- + @@ -77,7 +77,7 @@ sa-token的API众多,请恕此处无法为您逐一展示,更多示例请戳 ## 涵盖功能 - **登录验证** —— 轻松登录鉴权,并提供五种细分场景值 -- **权限验证** —— 拦截违规调用,不同角色不同授权 +- **权限验证** —— 适配RBAC模型,不同角色不同授权 - **Session会话** —— 专业的数据缓存中心 - **踢人下线** —— 将违规用户立刻清退下线 - **模拟他人账号** —— 实时操作任意用户状态数据 @@ -89,6 +89,7 @@ sa-token的API众多,请恕此处无法为您逐一展示,更多示例请戳 - **自动续签** —— 提供两种token过期策略,灵活搭配使用,还可自动续签 - **同端互斥登录** —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录 - **组件自动注入** —— 零配置与Spring等框架集成 +- **会话治理** —— 提供方便灵活的会话查询接口 - **更多功能正在集成中...** —— 如有您有好想法或者建议,欢迎加群交流 diff --git a/sa-token-doc/doc/index.html b/sa-token-doc/doc/index.html index 4dbf9360..4a3ae850 100644 --- a/sa-token-doc/doc/index.html +++ b/sa-token-doc/doc/index.html @@ -7,7 +7,7 @@ - + @@ -38,7 +38,7 @@