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 {
-
}