diff --git a/sa-token-starter/sa-token-jboot-plugin/pom.xml b/sa-token-starter/sa-token-jboot-plugin/pom.xml
index 6be5457c..4e6fdc6f 100644
--- a/sa-token-starter/sa-token-jboot-plugin/pom.xml
+++ b/sa-token-starter/sa-token-jboot-plugin/pom.xml
@@ -22,7 +22,7 @@
io.jboot
jboot
- 3.11.4
+ 3.14.2
provided
diff --git a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaJedisImpl.java b/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaJedisImpl.java
deleted file mode 100644
index 35d46a03..00000000
--- a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaJedisImpl.java
+++ /dev/null
@@ -1,460 +0,0 @@
-package cn.dev33.satoken.jboot;
-
-import cn.dev33.satoken.util.SaFoxUtil;
-import com.jfinal.log.Log;
-import io.jboot.Jboot;
-import io.jboot.components.serializer.JbootSerializer;
-import io.jboot.components.serializer.JbootSerializerManager;
-import io.jboot.exception.JbootIllegalConfigException;
-import io.jboot.utils.StrUtil;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-import redis.clients.jedis.JedisPoolConfig;
-import redis.clients.jedis.exceptions.JedisConnectionException;
-
-import java.time.Duration;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-public class SaJedisImpl {
-
- private final JbootSerializer serializer;
-
- protected JedisPool jedisPool;
- @SuppressWarnings("unused")
- private static final Log LOG = Log.getLog(SaJedisImpl.class);
- private final SaRedisConfig config;
- public SaJedisImpl(SaRedisConfig config) {
- if (config == null || StrUtil.isBlank(config.getSerializer())) {
- serializer = Jboot.getSerializer();
- } else {
- serializer = JbootSerializerManager.me().getSerializer(config.getSerializer());
- }
- this.config = config;
- assert this.config != null;
- String host = this.config.getHost();
- Integer port = this.config.getPort();
- Integer timeout = this.config.getTimeout();
- String password = this.config.getPassword();
- Integer database = this.config.getSaDb()==null?this.config.getDatabase():this.config.getSaDb();
- String clientName = this.config.getClientName();
-
- if (host.contains(":")) {
- port = Integer.valueOf(host.split(":")[1]);
- }
-
-
- JedisPoolConfig poolConfig = new JedisPoolConfig();
-
- if (StrUtil.isNotBlank(config.getTestWhileIdle())) {
- poolConfig.setTestWhileIdle(config.getTestWhileIdle());
- }
-
- if (StrUtil.isNotBlank(config.getTestOnBorrow())) {
- poolConfig.setTestOnBorrow(config.getTestOnBorrow());
- }
-
- if (StrUtil.isNotBlank(config.getTestOnCreate())) {
- poolConfig.setTestOnCreate(config.getTestOnCreate());
- }
-
- if (StrUtil.isNotBlank(config.getTestOnReturn())) {
- poolConfig.setTestOnReturn(config.getTestOnReturn());
- }
-
- if (StrUtil.isNotBlank(config.getMinEvictableIdleTimeMillis())) {
- poolConfig.setMinEvictableIdleTime(Duration.ofMillis(config.getMinEvictableIdleTimeMillis()));
- }
-
- if (StrUtil.isNotBlank(config.getTimeBetweenEvictionRunsMillis())) {
- poolConfig.setSoftMinEvictableIdleTime(Duration.ofMillis(config.getTimeBetweenEvictionRunsMillis()));
- }
-
- if (StrUtil.isNotBlank(config.getNumTestsPerEvictionRun())) {
- poolConfig.setNumTestsPerEvictionRun(config.getNumTestsPerEvictionRun());
- }
-
- if (StrUtil.isNotBlank(config.getMaxTotal())) {
- poolConfig.setMaxTotal(config.getMaxTotal());
- }
-
- if (StrUtil.isNotBlank(config.getMaxIdle())) {
- poolConfig.setMaxIdle(config.getMaxIdle());
- }
-
- if (StrUtil.isNotBlank(config.getMinIdle())) {
- poolConfig.setMinIdle(config.getMinIdle());
- }
-
- if (StrUtil.isNotBlank(config.getMaxWaitMillis())) {
- poolConfig.setMaxWaitMillis(config.getMaxWaitMillis());
- }
-
- this.jedisPool = new JedisPool(poolConfig, host, port, timeout, timeout, password, database, clientName);
- }
-
- /**
- * 获取Value,如无返空
- * @param key
- * @return
- */
- public String get(String key){
- Jedis jedis = getJedis();
- try{
- return jedis.get(key);
- }finally {
- returnResource(jedis);
- }
- }
- /**
- * 写入Value
- * @param key
- * @param value
- */
- public void set(String key, String value) {
- Jedis jedis = getJedis();
- try{
- jedis.set(key, value);
- }finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 写入Value,并设定存活时间 (单位: 秒)
- * @param key
- * @param value
- * @param timeout
- */
- public void setex(String key, String value, long timeout){
- Jedis jedis = getJedis();
- try{
- jedis.setex(key,timeout,value);
- }finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 删除Value
- * @param key
- */
- public void del(String key) {
- Jedis jedis = getJedis();
- try{
- jedis.del(key);
- }finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 获取Value的剩余存活时间 (单位: 秒)
- * @param key
- * @return
- */
- public long ttl(String key) {
- Jedis jedis = getJedis();
- try{
- return jedis.ttl(key);
- }finally {
- returnResource(jedis);
- }
- }
-
- public void expire(String key,long timeout){
- Jedis jedis = getJedis();
- try {
- jedis.expire(key,timeout);
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 获取Object,如无返空
- * @param key
- * @return
- */
- public Object getObject(String key) {
- Jedis jedis = getJedis();
- try {
- return valueFromBytes(jedis.get(keyToBytes(key)));
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 写入Object
- * @param key
- * @param value
- */
- public void setObject(Object key, Object value) {
- Jedis jedis = getJedis();
- try {
- jedis.set(keyToBytes(key), valueToBytes(value));
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 写入Object,并设定存活时间 (单位: 秒)
- * @param key
- * @param object
- * @param timeout
- */
- public void setexObject(String key, Object object,long timeout) {
- Jedis jedis = getJedis();
- try {
- jedis.setex(keyToBytes(key),timeout, valueToBytes(object));
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 删除Object
- * @param key
- */
- public void deleteObject(String key) {
- Jedis jedis = getJedis();
- try {
- jedis.del(keyToBytes(key));
- } finally {
- returnResource(jedis);
- }
- }
-
- public long getObjectTimeout(String key) {
- Jedis jedis = getJedis();
- try {
- return getJedis().ttl(keyToBytes(key));
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 修改Object的剩余存活时间 (单位: 秒)
- * @param key
- * @param timeout
- */
- public void expireObject(String key, long timeout) {
- Jedis jedis = getJedis();
- try {
- jedis.expire(keyToBytes(key), timeout);
- }
- finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 查找所有符合给定模式 pattern 的 key 。
- * KEYS * 匹配数据库中所有 key 。
- * KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
- * KEYS h*llo 匹配 hllo 和 heeeeello 等。
- * KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
- * 特殊符号用 \ 隔开
- */
- public Set keys(String pattern) {
- Jedis jedis = getJedis();
- try {
- return jedis.keys(pattern);
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 将哈希表 key 中的域 field 的值设为 value 。
- * 如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。
- * 如果域 field 已经存在于哈希表中,旧值将被覆盖。
- */
- public Long hset(String key, String field, String value) {
- Jedis jedis = getJedis();
- try {
- return jedis.hset(key, field, value);
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 同时将多个 field-value (域-值)对设置到哈希表 key 中。
- * 此命令会覆盖哈希表中已存在的域。
- * 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。
- */
- public String hmset(String key, Map hash) {
- Jedis jedis = getJedis();
- try {
- return jedis.hmset(key,hash);
- } finally {
- returnResource(jedis);
- }
- }
- /**
- * 返回哈希表 key 中给定域 field 的值。
- * @param key
- * @param field
- * @return
- */
- public String hget(String key,String field){
- Jedis jedis = getJedis();
- try {
- return jedis.hget(key,field);
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 返回哈希表 key 中,一个或多个给定域的值。
- * 如果给定的域不存在于哈希表,那么返回一个 nil 值。
- * 因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。
- */
- public List hmget(String key, String... fields) {
- Jedis jedis = getJedis();
- try {
- return jedis.hmget(key,fields);
- } finally {
- returnResource(jedis);
- }
- }
- /**
- * 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
- * @param key
- * @param fields
- * @return
- */
- public Long hdel(String key, String... fields) {
- Jedis jedis = getJedis();
- try {
- return jedis.hdel(key,fields);
- } finally {
- returnResource(jedis);
- }
- }
- /**
- * 查看哈希表 key 中,给定域 field 是否存在。
- * @param key
- * @param field
- * @return
- */
- public boolean hexists(String key, String field){
- Jedis jedis = getJedis();
- try {
- return jedis.hexists(key,field);
- } finally {
- returnResource(jedis);
- }
- }
- /**
- * 返回哈希表 key 中,所有的域和值。
- * 在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
- */
- public Map hgetAll(String key) {
- Jedis jedis = getJedis();
- try {
- return jedis.hgetAll(key);
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 返回哈希表 key 中所有域的值。
- * @param key
- * @return
- */
- public List hvals(String key) {
- Jedis jedis = getJedis();
- try {
- return jedis.hvals(key);
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 返回哈希表 key 中的所有域。
- * @param key
- * @return
- */
- public Set hkeys(String key){
- Jedis jedis = getJedis();
- try {
- return jedis.hkeys(key);
- } finally {
- returnResource(jedis);
- }
- }
-
- /**
- * 返回哈希表 key 中域的数量。
- * @param key
- * @return
- */
- public Long hlen(String key){
- Jedis jedis = getJedis();
- try {
- return jedis.hlen(key);
- } finally {
- returnResource(jedis);
- }
- }
-
- public Jedis getJedis() {
- try {
- return jedisPool.getResource();
- } catch (JedisConnectionException e) {
- throw new JbootIllegalConfigException("can not connect to redis host " + config.getHost() + ":" + config.getPort() + " ," +
- " cause : " + e.toString(), e);
- }
- }
-
-
- public void returnResource(Jedis jedis) {
- if (jedis != null) {
- jedis.close();
- }
- }
-
- public byte[] keyToBytes(Object key) {
- return key.toString().getBytes();
- }
-
- public String bytesToKey(byte[] bytes) {
- return new String(bytes);
- }
-
- public byte[] valueToBytes(Object value) {
- return serializer.serialize(value);
- }
-
- public Object valueFromBytes(byte[] bytes) {
- if (bytes == null || bytes.length == 0) {
- return null;
- }
- return serializer.deserialize(bytes);
- }
-
- /**
- * 搜索数据
- * @param prefix
- * @param keyword
- * @param start
- * @param size
- * @return
- */
- public List searchData(String prefix, String keyword, int start, int size) {
- Set keys = getJedis().keys(prefix + "*" + keyword + "*");
- List list = new ArrayList(keys);
- return SaFoxUtil.searchList(list, start, size);
- }
-
-}
diff --git a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaRedisConfig.java b/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaRedisConfig.java
deleted file mode 100644
index 33dc56be..00000000
--- a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaRedisConfig.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.dev33.satoken.jboot;
-
-import io.jboot.app.config.annotation.ConfigModel;
-import io.jboot.support.redis.JbootRedisConfig;
-
-/**
- * SA-Token redis缓存配置,获取database
- */
-@ConfigModel(
- prefix = "jboot.redis"
-)
-public class SaRedisConfig extends JbootRedisConfig{
-
- private Integer saDb;
-
- public SaRedisConfig(){
-
- }
- public Integer getSaDb() {
- return this.saDb;
- }
-
- public void setSaDb(Integer saDb) {
- this.saDb = saDb;
- }
-
-}
diff --git a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaRedisManager.java b/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaRedisManager.java
deleted file mode 100644
index 08c5b3c8..00000000
--- a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaRedisManager.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.dev33.satoken.jboot;
-
-import io.jboot.Jboot;
-
-public class SaRedisManager {
-
- private static SaRedisManager manager = new SaRedisManager();
-
- private SaRedisManager() {
- }
-
- public static SaRedisManager me() {
- return manager;
- }
-
- private SaJedisImpl redis;
-
- public SaJedisImpl getRedis() {
- if (redis == null) {
- SaRedisConfig config = Jboot.config(SaRedisConfig.class);
- redis = getRedis(config);
- }
-
- return redis;
- }
-
- public SaJedisImpl getRedis(SaRedisConfig config) {
- if (config == null || !config.isConfigOk()) {
- return null;
- }
- return getJedisClient(config);
- }
-
-
- private SaJedisImpl getJedisClient(SaRedisConfig config) {
- return new SaJedisImpl(config);
- }
-}
diff --git a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaTokenCacheDao.java b/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaTokenCacheDao.java
new file mode 100644
index 00000000..0765119e
--- /dev/null
+++ b/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaTokenCacheDao.java
@@ -0,0 +1,125 @@
+package cn.dev33.satoken.jboot;
+
+import cn.dev33.satoken.dao.SaTokenDao;
+import cn.dev33.satoken.session.SaSession;
+import cn.dev33.satoken.util.SaFoxUtil;
+import io.jboot.utils.CacheUtil;
+import io.jboot.utils.StrUtil;
+
+import java.util.List;
+
+/**
+ * 使用jBoot的缓存方法存取Token数据
+ */
+public class SaTokenCacheDao implements SaTokenDao {
+
+ private final String cacheName;
+
+ /**
+ * 调用的Cache名称
+ *
+ * @param cacheName 使用的缓存配置名,默认为 default
+ */
+ public SaTokenCacheDao(String cacheName) {
+ if (StrUtil.isBlank(cacheName)) {
+ cacheName = "default";
+ }
+ this.cacheName = cacheName;
+ }
+
+ @Override
+ public String get(String s) {
+ return CacheUtil.use(cacheName).get("SA", s);
+ }
+
+ @Override
+ public void set(String s, String s1, long l) {
+ CacheUtil.use(cacheName).put("SA", s, s1, Integer.parseInt(l + ""));
+ }
+
+ @Override
+ public void update(String s, String s1) {
+ CacheUtil.use(cacheName).put("SA", s, s1);
+ }
+
+ @Override
+ public void delete(String s) {
+ CacheUtil.use(cacheName).remove("SA", s);
+ }
+
+ @Override
+ public long getTimeout(String s) {
+ return CacheUtil.use(cacheName).getTtl("SA", s);
+ }
+
+ @Override
+ public void updateTimeout(String s, long l) {
+ CacheUtil.use(cacheName).setTtl("SA", s, Integer.parseInt(l + ""));
+ }
+
+ @Override
+ public Object getObject(String s) {
+ return CacheUtil.use(cacheName).get("SA", s);
+ }
+
+ @Override
+ public void setObject(String s, Object o, long l) {
+ CacheUtil.use(cacheName).put("SA", s, o, Integer.parseInt(l + ""));
+ }
+
+ @Override
+ public void updateObject(String s, Object o) {
+ CacheUtil.use(cacheName).put("SA", s, o);
+ }
+
+ @Override
+ public void deleteObject(String s) {
+ CacheUtil.use(cacheName).remove("SA", s);
+ }
+
+ @Override
+ public long getObjectTimeout(String s) {
+ return CacheUtil.use(cacheName).getTtl("SA", s);
+ }
+
+ @Override
+ public void updateObjectTimeout(String s, long l) {
+ CacheUtil.use(cacheName).setTtl("SA", s, Integer.parseInt(l + ""));
+ }
+
+ @Override
+ public SaSession getSession(String sessionId) {
+ return SaTokenDao.super.getSession(sessionId);
+ }
+
+ @Override
+ public void setSession(SaSession session, long timeout) {
+ SaTokenDao.super.setSession(session, timeout);
+ }
+
+ @Override
+ public void updateSession(SaSession session) {
+ SaTokenDao.super.updateSession(session);
+ }
+
+ @Override
+ public void deleteSession(String sessionId) {
+ SaTokenDao.super.deleteSession(sessionId);
+ }
+
+ @Override
+ public long getSessionTimeout(String sessionId) {
+ return SaTokenDao.super.getSessionTimeout(sessionId);
+ }
+
+ @Override
+ public void updateSessionTimeout(String sessionId, long timeout) {
+ SaTokenDao.super.updateSessionTimeout(sessionId, timeout);
+ }
+
+ @Override
+ public List searchData(String prefix, String keyword, int start, int size) {
+ List list = CacheUtil.use(cacheName).getKeys(prefix + "*" + keyword + "*");
+ return SaFoxUtil.searchList(list, start, size);
+ }
+}
diff --git a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaTokenDaoRedis.java b/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaTokenDaoRedis.java
deleted file mode 100644
index ce038125..00000000
--- a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaTokenDaoRedis.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package cn.dev33.satoken.jboot;
-
-import cn.dev33.satoken.dao.SaTokenDao;
-import cn.dev33.satoken.util.SaFoxUtil;
-import io.jboot.Jboot;
-import io.jboot.exception.JbootIllegalConfigException;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-public class SaTokenDaoRedis implements SaTokenDao {
-
- private SaJedisImpl redis;
- /**
- * 标记:是否已初始化成功
- */
- public boolean isInit;
-
- public SaTokenDaoRedis(){
- SaRedisConfig redisConfig = Jboot.config(SaRedisConfig.class);
- redisConfig.setSerializer("cn.dev33.satoken.jboot.SaJdkSerializer");
- //优先使用 jboot.cache.redis 的配置
- if (redisConfig.isConfigOk()) {
- redis = SaRedisManager.me().getRedis(redisConfig);
- }
-
- if (redis == null) {
- this.isInit = false;
- throw new JbootIllegalConfigException("can not get redis, please check your jboot.properties , please correct config jboot.cache.redis.host or jboot.redis.host ");
- }else{
- this.isInit = true;
- }
- }
-
- /**
- * 获取Value,如无返空
- * @param key
- * @return
- */
- @Override
- public String get(String key) {
- return redis.get(key);
- }
-
- /**
- * 写入Value,并设定存活时间 (单位: 秒)
- * @param key
- * @param value
- * @param timeout
- */
- @Override
- public void set(String key, String value, long timeout) {
- if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- redis.set(key, value);
- }else{
- redis.setex(key,value,timeout);
- }
- }
-
- /**
- * 修改指定key-value键值对 (过期时间不变)
- * @param key
- * @param value
- */
- @Override
- public void update(String key, String value) {
- long expire = getTimeout(key);
- // -2 = 无此键
- if(expire == SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- this.set(key,value,expire);
- }
-
- /**
- * 删除Value
- * @param key
- */
- @Override
- public void delete(String key) {
- redis.del(key);
- }
-
- /**
- * 获取Value的剩余存活时间 (单位: 秒)
- * @param key
- * @return
- */
- @Override
- public long getTimeout(String key) {
- return redis.ttl(key);
- }
-
- /**
- * 修改Value的剩余存活时间 (单位: 秒)
- * @param key
- * @param timeout
- */
- @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.set(key, this.get(key), timeout);
- }
- return;
- }
- redis.expire(key,timeout);
- }
-
- /**
- * 获取Object,如无返空
- * @param key
- * @return
- */
- @Override
- public Object getObject(String key) {
- return redis.getObject(key);
- }
-
- /**
- * 写入Object,并设定存活时间 (单位: 秒)
- * @param key
- * @param object
- * @param timeout
- */
- @Override
- public void setObject(String key, Object object, long timeout) {
- if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- redis.setObject(key, object);
- }else{
- redis.setexObject(key,object,timeout);
- }
- }
-
- /**
- * 更新Object (过期时间不变)
- * @param key
- * @param object
- */
- @Override
- public void updateObject(String key, Object object) {
- long expire = getObjectTimeout(key);
- // -2 = 无此键
- if(expire == SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- this.setObject(key, object, expire);
- }
-
- /**
- * 删除Object
- * @param key
- */
- @Override
- public void deleteObject(String key) {
- redis.deleteObject(key);
- }
-
- @Override
- public long getObjectTimeout(String key) {
- return redis.getObjectTimeout(key);
- }
-
- /**
- * 修改Object的剩余存活时间 (单位: 秒)
- * @param key
- * @param timeout
- */
- @Override
- public void updateObjectTimeout(String key, long timeout) {
- //判断是否想要设置为永久
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- long expire = getTimeout(key);
- if(expire == SaTokenDao.NEVER_EXPIRE) {
- // 如果其已经被设置为永久,则不作任何处理
- } else {
- // 如果尚未被设置为永久,那么再次set一次
- this.setObject(key, this.get(key), timeout);
- }
- return;
- }
- redis.expireObject(key,timeout);
- }
-
- /**
- * 搜索数据
- * @param prefix
- * @param keyword
- * @param start
- * @param size
- * @return
- */
- @Override
- public List searchData(String prefix, String keyword, int start, int size) {
- Set keys = redis.keys(prefix + "*" + keyword + "*");
- List list = new ArrayList(keys);
- return SaFoxUtil.searchList(list, start, size);
- }
-}
diff --git a/sa-token-starter/sa-token-jboot-plugin/src/test/java/cn/dev33/satoken/jboot/test/AtteStartListener.java b/sa-token-starter/sa-token-jboot-plugin/src/test/java/cn/dev33/satoken/jboot/test/AtteStartListener.java
index 64580ec0..9a31d2f5 100644
--- a/sa-token-starter/sa-token-jboot-plugin/src/test/java/cn/dev33/satoken/jboot/test/AtteStartListener.java
+++ b/sa-token-starter/sa-token-jboot-plugin/src/test/java/cn/dev33/satoken/jboot/test/AtteStartListener.java
@@ -5,8 +5,8 @@ import cn.dev33.satoken.config.SaCookieConfig;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.jboot.SaAnnotationInterceptor;
+import cn.dev33.satoken.jboot.SaTokenCacheDao;
import cn.dev33.satoken.jboot.SaTokenContextForJboot;
-import cn.dev33.satoken.jboot.SaTokenDaoRedis;
import cn.dev33.satoken.util.SaTokenConsts;
import com.jfinal.config.Constants;
import com.jfinal.config.Interceptors;
@@ -29,7 +29,6 @@ public class AtteStartListener implements JbootAppListener {
saTokenConfig.setTokenName("token"); //更换satoken的名称
saTokenConfig.setCookie(new SaCookieConfig().setHttpOnly(true)); //开启cookies的httponly属性
SaManager.setConfig(saTokenConfig);
- SaManager.setSaTokenDao(new SaTokenDaoRedis());
}
@Override
@@ -70,7 +69,7 @@ public class AtteStartListener implements JbootAppListener {
@Override
public void onStart() {
-
+ SaManager.setSaTokenDao(new SaTokenCacheDao(null));
}
@Override