diff --git a/pom.xml b/pom.xml index daa0af62..32f734e6 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,7 @@ sa-token-core sa-token-spring-boot-starter + sa-token-dao-redis-spring-boot-starter diff --git a/sa-token-dao-redis-spring-boot-starter/.gitignore b/sa-token-dao-redis-spring-boot-starter/.gitignore new file mode 100644 index 00000000..f56feec7 --- /dev/null +++ b/sa-token-dao-redis-spring-boot-starter/.gitignore @@ -0,0 +1,12 @@ +target/ + +node_modules/ +bin/ +.settings/ +unpackage/ +.classpath +.project + +.factorypath + +.idea/ \ No newline at end of file diff --git a/sa-token-dao-redis-spring-boot-starter/pom.xml b/sa-token-dao-redis-spring-boot-starter/pom.xml new file mode 100644 index 00000000..e2c2a8ee --- /dev/null +++ b/sa-token-dao-redis-spring-boot-starter/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + + cn.dev33 + sa-token-parent + 1.7.0 + + jar + + sa-token-dao-redis-spring-boot-starter + sa-token-dao-redis-spring-boot-starter + sa-token integrate redis + + + + + cn.dev33 + sa-token-spring-boot-starter + 1.7.0 + + + + org.springframework.boot + spring-boot-starter-redis + RELEASE + + + + + + diff --git a/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenDaoRedis.java b/sa-token-dao-redis-spring-boot-starter/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java similarity index 76% rename from sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenDaoRedis.java rename to sa-token-dao-redis-spring-boot-starter/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java index 58459efd..a475eb93 100644 --- a/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenDaoRedis.java +++ b/sa-token-dao-redis-spring-boot-starter/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java @@ -1,4 +1,4 @@ -package com.pj.satoken; +package cn.dev33.satoken.dao; import java.util.concurrent.TimeUnit; @@ -7,22 +7,25 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; +import org.springframework.stereotype.Component; -import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.session.SaSession; /** - * sa-token持久层的实现类 , 基于redis + * sa-token持久层的实现类, 基于redis */ -//@Component // 打开此注解,保证此类被springboot扫描,即可完成sa-token与redis的集成 +@Component public class SaTokenDaoRedis implements SaTokenDao { - - // string专用 + /** + * string专用 + */ @Autowired StringRedisTemplate stringRedisTemplate; - // SaSession专用 + /** + * SaSession专用 + */ RedisTemplate redisTemplate; @Autowired @SuppressWarnings({ "rawtypes", "unchecked" }) @@ -33,13 +36,17 @@ public class SaTokenDaoRedis implements SaTokenDao { } - // 根据key获取value ,如果没有,则返回空 + /** + * 根据key获取value,如果没有,则返回空 + */ @Override public String getValue(String key) { return stringRedisTemplate.opsForValue().get(key); } - // 写入指定key-value键值对,并设定过期时间(单位:秒) + /** + * 写入指定key-value键值对,并设定过期时间(单位:秒) + */ @Override public void setValue(String key, String value, long timeout) { // 判断是否为永不过期 @@ -50,7 +57,9 @@ public class SaTokenDaoRedis implements SaTokenDao { } } - // 更新指定key-value键值对 (过期时间取原来的值) + /** + * 根据key获取value,如果没有,则返回空 + */ @Override public void updateValue(String key, String value) { long expire = getTimeout(key); @@ -60,27 +69,34 @@ public class SaTokenDaoRedis implements SaTokenDao { this.setValue(key, value, expire); } - // 删除一个指定的key + /** + * 根据key获取value,如果没有,则返回空 + */ @Override public void deleteKey(String key) { stringRedisTemplate.delete(key); } - // 获取指定key的剩余存活时间 (单位: 秒) + /** + * 根据key获取value,如果没有,则返回空 + */ @Override public long getTimeout(String key) { return stringRedisTemplate.getExpire(key); } - - // 根据指定key的session,如果没有,则返回空 + /** + * 根据指定key的Session,如果没有,则返回空 + */ @Override public SaSession getSession(String sessionId) { return redisTemplate.opsForValue().get(sessionId); } - // 将指定session持久化 + /** + * 将指定Session持久化 + */ @Override public void saveSession(SaSession session, long timeout) { // 判断是否为永不过期 @@ -91,7 +107,9 @@ public class SaTokenDaoRedis implements SaTokenDao { } } - // 更新指定session + /** + * 更新指定session + */ @Override public void updateSession(SaSession session) { long expire = getSessionTimeout(session.getId()); @@ -101,26 +119,20 @@ public class SaTokenDaoRedis implements SaTokenDao { this.saveSession(session, expire); } - // 删除一个指定的session + /** + * 删除一个指定的session + */ @Override public void deleteSession(String sessionId) { redisTemplate.delete(sessionId); } - // 获取指定SaSession的剩余存活时间 (单位: 秒) + /** + * 获取指定SaSession的剩余存活时间 (单位: 秒) + */ @Override public long getSessionTimeout(String sessionId) { return redisTemplate.getExpire(sessionId); } - - - - - - - - - - } diff --git a/sa-token-dao-redis-spring-boot-starter/src/main/resources/META-INF/spring.factories b/sa-token-dao-redis-spring-boot-starter/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..ce5c7e82 --- /dev/null +++ b/sa-token-dao-redis-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.dev33.satoken.dao.SaTokenDaoRedis \ No newline at end of file diff --git a/sa-token-demo-springboot/.factorypath b/sa-token-demo-springboot/.factorypath deleted file mode 100644 index 70a2484b..00000000 --- a/sa-token-demo-springboot/.factorypath +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sa-token-demo-springboot/.gitignore b/sa-token-demo-springboot/.gitignore index a578d5b1..99a6e767 100644 --- a/sa-token-demo-springboot/.gitignore +++ b/sa-token-demo-springboot/.gitignore @@ -7,4 +7,6 @@ unpackage/ .classpath .project -.idea/ \ No newline at end of file +.idea/ + +.factorypath \ No newline at end of file diff --git a/sa-token-demo-springboot/pom.xml b/sa-token-demo-springboot/pom.xml index 3a2c1aa0..7129baa4 100644 --- a/sa-token-demo-springboot/pom.xml +++ b/sa-token-demo-springboot/pom.xml @@ -32,12 +32,12 @@ 1.7.0 - + - org.springframework.boot - spring-boot-starter-redis - RELEASE - + cn.dev33 + sa-token-dao-redis-spring-boot-starter + 1.7.0 + diff --git a/sa-token-demo-springboot/src/main/java/com/pj/SaTokenDemoApplication.java b/sa-token-demo-springboot/src/main/java/com/pj/SaTokenDemoApplication.java index 4422fe1d..6abf239d 100644 --- a/sa-token-demo-springboot/src/main/java/com/pj/SaTokenDemoApplication.java +++ b/sa-token-demo-springboot/src/main/java/com/pj/SaTokenDemoApplication.java @@ -11,6 +11,7 @@ public class SaTokenDemoApplication { public static void main(String[] args) { SpringApplication.run(SaTokenDemoApplication.class, args); System.out.println("\n启动成功:sa-token配置如下:" + SaTokenManager.getConfig()); + System.out.println(SaTokenManager.getSaTokenDao()); } } \ No newline at end of file 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 5aae6404..f5505e0a 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 @@ -104,7 +104,6 @@ public class TestController { return AjaxJson.getSuccessData(tokenInfo); } - // 测试注解式鉴权, 浏览器访问: http://localhost:8081/test/atCheck @SaCheckLogin // 注解式鉴权:当前会话必须登录才能通过 @SaCheckPermission("user-add") // 注解式鉴权:当前会话必须具有指定权限才能通过 @@ -124,7 +123,6 @@ public class TestController { return AjaxJson.getSuccessData("用户信息"); } - // [活动时间] 续签: http://localhost:8081/test/rene @RequestMapping("rene") public AjaxJson rene() { @@ -133,7 +131,6 @@ public class TestController { return AjaxJson.getSuccess("续签成功"); } - // 测试踢人下线 浏览器访问: http://localhost:8081/test/kickOut @RequestMapping("kickOut") public AjaxJson kickOut() { @@ -149,7 +146,6 @@ public class TestController { return AjaxJson.getSuccess(); } - // 测试 浏览器访问: http://localhost:8081/test/test @RequestMapping("test") public AjaxJson test() { @@ -167,5 +163,4 @@ public class TestController { - }