diff --git a/sa-token-bom/pom.xml b/sa-token-bom/pom.xml
index 8d473089..c085d5eb 100644
--- a/sa-token-bom/pom.xml
+++ b/sa-token-bom/pom.xml
@@ -116,12 +116,17 @@
cn.dev33
- sa-token-redis-fastjson
+ sa-token-jackson
${revision}
cn.dev33
- sa-token-redis-fastjson2
+ sa-token-fastjson
+ ${revision}
+
+
+ cn.dev33
+ sa-token-fastjson2
${revision}
@@ -194,11 +199,6 @@
sa-token-temp-jwt
${revision}
-
- cn.dev33
- sa-token-jackson
- ${revision}
-
cn.dev33
sa-token-redis-template-jdk-serializer
diff --git a/sa-token-plugin/pom.xml b/sa-token-plugin/pom.xml
index 786d669b..62c1cab9 100644
--- a/sa-token-plugin/pom.xml
+++ b/sa-token-plugin/pom.xml
@@ -22,9 +22,9 @@
sa-token-redis-template
sa-token-redis-template-jdk-serializer
sa-token-redis-jackson
+ sa-token-fastjson
+ sa-token-fastjson2
- sa-token-redis-fastjson
- sa-token-redis-fastjson2
sa-token-redisson-jackson
sa-token-redisson-jackson2
sa-token-redisx
diff --git a/sa-token-plugin/sa-token-alone-redis/pom.xml b/sa-token-plugin/sa-token-alone-redis/pom.xml
index 7f9c5951..4ee80f60 100644
--- a/sa-token-plugin/sa-token-alone-redis/pom.xml
+++ b/sa-token-plugin/sa-token-alone-redis/pom.xml
@@ -25,17 +25,17 @@
cn.dev33
- sa-token-redis-jackson
+ sa-token-jackson
true
cn.dev33
- sa-token-redis-fastjson
+ sa-token-fastjson
true
cn.dev33
- sa-token-redis-fastjson2
+ sa-token-fastjson2
true
diff --git a/sa-token-plugin/sa-token-redis-fastjson/.gitignore b/sa-token-plugin/sa-token-fastjson/.gitignore
similarity index 100%
rename from sa-token-plugin/sa-token-redis-fastjson/.gitignore
rename to sa-token-plugin/sa-token-fastjson/.gitignore
diff --git a/sa-token-plugin/sa-token-redis-fastjson/pom.xml b/sa-token-plugin/sa-token-fastjson/pom.xml
similarity index 70%
rename from sa-token-plugin/sa-token-redis-fastjson/pom.xml
rename to sa-token-plugin/sa-token-fastjson/pom.xml
index e5cdb72c..b7b2abf6 100644
--- a/sa-token-plugin/sa-token-redis-fastjson/pom.xml
+++ b/sa-token-plugin/sa-token-fastjson/pom.xml
@@ -10,20 +10,13 @@
4.0.0
- sa-token-redis-fastjson
+ sa-token-fastjson
-
cn.dev33
sa-token-core
-
-
- org.springframework.boot
- spring-boot-starter-data-redis
-
-
com.alibaba
fastjson
diff --git a/sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson.java b/sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson.java
new file mode 100644
index 00000000..1f4b0612
--- /dev/null
+++ b/sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2020-2099 sa-token.cc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.dev33.satoken.json;
+
+import cn.dev33.satoken.session.SaSessionForFastjsonCustomized;
+import com.alibaba.fastjson.JSON;
+
+import java.util.Map;
+
+/**
+ * JSON 转换器, Fastjson 版实现
+ *
+ * @author click33
+ * @since 1.34.0
+ */
+public class SaJsonTemplateForFastjson implements SaJsonTemplate {
+
+ /**
+ * 序列化:对象 -> json 字符串
+ */
+ @Override
+ public String objectToJson(Object obj) {
+ return JSON.toJSONString(obj);
+ }
+
+ /**
+ * 反序列化:json 字符串 → 对象
+ */
+ @Override
+ public Object jsonToObject(String jsonStr) {
+ // TODO: 此处待更改,需要让其自动识别类型
+ return JSON.parseObject(jsonStr, SaSessionForFastjsonCustomized.class);
+ }
+
+ /**
+ * 反序列化:json 字符串 → Map
+ */
+ @Override
+ public Map jsonToMap(String jsonStr) {
+ return JSON.parseObject(jsonStr, Map.class);
+ }
+
+}
diff --git a/sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginFastjson.java b/sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginFastjson.java
new file mode 100644
index 00000000..ff40b972
--- /dev/null
+++ b/sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginFastjson.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2020-2099 sa-token.cc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.dev33.satoken.plugin;
+
+import cn.dev33.satoken.SaManager;
+import cn.dev33.satoken.json.SaJsonTemplateForFastjson;
+import cn.dev33.satoken.session.SaSessionForFastjsonCustomized;
+import cn.dev33.satoken.strategy.SaStrategy;
+
+/**
+ * SaToken 插件安装:JSON 转换器 - Fastjson 版
+ *
+ * @author click33
+ * @since 1.41.0
+ */
+public class SaTokenPluginFastjson implements SaTokenPlugin {
+
+ @Override
+ public void setup() {
+
+ // 设置JSON转换器:Fastjson 版
+ SaManager.setSaJsonTemplate(new SaJsonTemplateForFastjson());
+
+ // 重写 SaSession 生成策略
+ SaStrategy.instance.createSession = SaSessionForFastjsonCustomized::new;
+
+ }
+
+}
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjsonCustomized.java b/sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/session/SaSessionForFastjsonCustomized.java
similarity index 81%
rename from sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjsonCustomized.java
rename to sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/session/SaSessionForFastjsonCustomized.java
index 27415f15..d6b987b5 100644
--- a/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjsonCustomized.java
+++ b/sa-token-plugin/sa-token-fastjson/src/main/java/cn/dev33/satoken/session/SaSessionForFastjsonCustomized.java
@@ -13,16 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package cn.dev33.satoken.dao;
+package cn.dev33.satoken.session;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.annotation.JSONField;
-
-import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.util.SaFoxUtil;
+import com.alibaba.fastjson.JSON;
/**
- * Fastjson 定制版 SaSession,重写类型转换API、忽略 timeout 字段的序列化
+ * Fastjson 定制版 SaSession,重写类型转换API
*
* @author click33
* @since 1.34.0
@@ -31,10 +28,6 @@ public class SaSessionForFastjsonCustomized extends SaSession {
private static final long serialVersionUID = -7600983549653130681L;
- public SaSessionForFastjsonCustomized() {
- super();
- }
-
/**
* 构建一个 SaSession 对象
* @param id Session 的 id
@@ -79,13 +72,4 @@ public class SaSessionForFastjsonCustomized extends SaSession {
return JSON.parseObject(getString(key), cs);
}
- /**
- * 忽略 timeout 字段的序列化
- */
- @Override
- @JSONField(serialize = false)
- public long timeout() {
- return super.timeout();
- }
-
}
diff --git a/sa-token-plugin/sa-token-fastjson/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin b/sa-token-plugin/sa-token-fastjson/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin
new file mode 100644
index 00000000..1199cedf
--- /dev/null
+++ b/sa-token-plugin/sa-token-fastjson/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin
@@ -0,0 +1 @@
+cn.dev33.satoken.plugin.SaTokenPluginFastjson
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-redis-fastjson2/.gitignore b/sa-token-plugin/sa-token-fastjson2/.gitignore
similarity index 100%
rename from sa-token-plugin/sa-token-redis-fastjson2/.gitignore
rename to sa-token-plugin/sa-token-fastjson2/.gitignore
diff --git a/sa-token-plugin/sa-token-redis-fastjson2/pom.xml b/sa-token-plugin/sa-token-fastjson2/pom.xml
similarity index 70%
rename from sa-token-plugin/sa-token-redis-fastjson2/pom.xml
rename to sa-token-plugin/sa-token-fastjson2/pom.xml
index 82d43bc1..0d526016 100644
--- a/sa-token-plugin/sa-token-redis-fastjson2/pom.xml
+++ b/sa-token-plugin/sa-token-fastjson2/pom.xml
@@ -10,20 +10,13 @@
4.0.0
- sa-token-redis-fastjson2
+ sa-token-fastjson2
-
cn.dev33
sa-token-core
-
-
- org.springframework.boot
- spring-boot-starter-data-redis
-
-
com.alibaba.fastjson2
fastjson2
diff --git a/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson2.java b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson2.java
new file mode 100644
index 00000000..97585766
--- /dev/null
+++ b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForFastjson2.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2020-2099 sa-token.cc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.dev33.satoken.json;
+
+
+import cn.dev33.satoken.session.SaSessionForFastjson2Customized;
+import com.alibaba.fastjson2.JSON;
+
+import java.util.Map;
+
+/**
+ * JSON 转换器, Fastjson 版实现
+ *
+ * @author click33
+ * @since 1.34.0
+ */
+public class SaJsonTemplateForFastjson2 implements SaJsonTemplate {
+
+ /**
+ * 序列化:对象 -> json 字符串
+ */
+ @Override
+ public String objectToJson(Object obj) {
+ return JSON.toJSONString(obj);
+ }
+
+ /**
+ * 反序列化:json 字符串 → 对象
+ */
+ @Override
+ public Object jsonToObject(String jsonStr) {
+ // TODO: 此处待更改,需要让其自动识别类型
+ return JSON.parseObject(jsonStr, SaSessionForFastjson2Customized.class);
+ }
+
+ /**
+ * 反序列化:json 字符串 → Map
+ */
+ @Override
+ public Map jsonToMap(String jsonStr) {
+ return JSON.parseObject(jsonStr, Map.class);
+ }
+
+}
diff --git a/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginFastjson2.java b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginFastjson2.java
new file mode 100644
index 00000000..d84f8c28
--- /dev/null
+++ b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginFastjson2.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2020-2099 sa-token.cc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.dev33.satoken.plugin;
+
+import cn.dev33.satoken.SaManager;
+import cn.dev33.satoken.json.SaJsonTemplateForFastjson2;
+import cn.dev33.satoken.session.SaSessionForFastjson2Customized;
+import cn.dev33.satoken.strategy.SaStrategy;
+
+/**
+ * SaToken 插件安装:JSON 转换器 - Fastjson2 版
+ *
+ * @author click33
+ * @since 1.41.0
+ */
+public class SaTokenPluginFastjson2 implements SaTokenPlugin {
+
+ @Override
+ public void setup() {
+
+ // 设置 JSON 转换器:Fastjson2 版
+ SaManager.setSaJsonTemplate(new SaJsonTemplateForFastjson2());
+
+ // 重写 SaSession 生成策略
+ SaStrategy.instance.createSession = SaSessionForFastjson2Customized::new;
+
+
+ }
+
+}
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjson2Customized.java b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/session/SaSessionForFastjson2Customized.java
similarity index 85%
rename from sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjson2Customized.java
rename to sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/session/SaSessionForFastjson2Customized.java
index 86609141..694c2653 100644
--- a/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjson2Customized.java
+++ b/sa-token-plugin/sa-token-fastjson2/src/main/java/cn/dev33/satoken/session/SaSessionForFastjson2Customized.java
@@ -13,13 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package cn.dev33.satoken.dao;
+package cn.dev33.satoken.session;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.annotation.JSONField;
-
-import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.util.SaFoxUtil;
+import com.alibaba.fastjson2.JSON;
/**
* Fastjson2 定制版 SaSession,重写类型转换API、忽略 timeout 字段的序列化
@@ -31,10 +28,6 @@ public class SaSessionForFastjson2Customized extends SaSession {
private static final long serialVersionUID = -7600983549653130681L;
- public SaSessionForFastjson2Customized() {
- super();
- }
-
/**
* 构建一个 SaSession 对象
* @param id Session 的 id
@@ -79,13 +72,4 @@ public class SaSessionForFastjson2Customized extends SaSession {
return JSON.parseObject(getString(key), cs);
}
- /**
- * 忽略 timeout 字段的序列化
- */
- @Override
- @JSONField(serialize = false)
- public long timeout() {
- return super.timeout();
- }
-
}
diff --git a/sa-token-plugin/sa-token-fastjson2/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin b/sa-token-plugin/sa-token-fastjson2/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin
new file mode 100644
index 00000000..f2234ee7
--- /dev/null
+++ b/sa-token-plugin/sa-token-fastjson2/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin
@@ -0,0 +1 @@
+cn.dev33.satoken.plugin.SaTokenPluginFastjson2
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/dao/SaJsonTemplateForJackson.java b/sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForJackson.java
similarity index 98%
rename from sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/dao/SaJsonTemplateForJackson.java
rename to sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForJackson.java
index 7a3125ac..d8823c32 100644
--- a/sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/dao/SaJsonTemplateForJackson.java
+++ b/sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/json/SaJsonTemplateForJackson.java
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package cn.dev33.satoken.dao;
+package cn.dev33.satoken.json;
import cn.dev33.satoken.exception.SaJsonConvertException;
-import cn.dev33.satoken.json.SaJsonTemplate;
import cn.dev33.satoken.util.SaFoxUtil;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/plugin/impl/SaTokenPluginForJackson.java b/sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginForJackson.java
similarity index 86%
rename from sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/plugin/impl/SaTokenPluginForJackson.java
rename to sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginForJackson.java
index a189e8d3..32ddc6cb 100644
--- a/sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/plugin/impl/SaTokenPluginForJackson.java
+++ b/sa-token-plugin/sa-token-jackson/src/main/java/cn/dev33/satoken/plugin/SaTokenPluginForJackson.java
@@ -13,11 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package cn.dev33.satoken.plugin.impl;
+package cn.dev33.satoken.plugin;
import cn.dev33.satoken.SaManager;
-import cn.dev33.satoken.dao.SaJsonTemplateForJackson;
-import cn.dev33.satoken.plugin.SaTokenPlugin;
+import cn.dev33.satoken.json.SaJsonTemplateForJackson;
/**
* SaToken 插件:JSON 转换器安装
diff --git a/sa-token-plugin/sa-token-jackson/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin b/sa-token-plugin/sa-token-jackson/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin
index 488ec78a..3e154517 100644
--- a/sa-token-plugin/sa-token-jackson/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin
+++ b/sa-token-plugin/sa-token-jackson/src/main/resources/META-INF/services/cn.dev33.satoken.plugin.SaTokenPlugin
@@ -1 +1 @@
-cn.dev33.satoken.plugin.impl.SaTokenPluginForJackson
\ No newline at end of file
+cn.dev33.satoken.plugin.SaTokenPluginForJackson
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson.java b/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson.java
deleted file mode 100644
index bd999f8c..00000000
--- a/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright 2020-2099 sa-token.cc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package cn.dev33.satoken.dao;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-import org.springframework.stereotype.Component;
-
-import com.alibaba.fastjson.JSON;
-
-import cn.dev33.satoken.session.SaSession;
-import cn.dev33.satoken.strategy.SaStrategy;
-import cn.dev33.satoken.util.SaFoxUtil;
-
-/**
- * Sa-Token 持久层实现 [ Redis存储、fastjson序列化 ]
- *
- * @author sikadai
- * @since 1.34.0
- */
-@Component
-public class SaTokenDaoRedisFastjson implements SaTokenDao {
-
- /**
- * String 读写专用
- */
- public StringRedisTemplate stringRedisTemplate;
-
- /**
- * Object 读写专用
- */
- public StringRedisTemplate objectRedisTemplate;
-
- /**
- * 标记:是否已初始化成功
- */
- public boolean isInit;
-
- @Autowired
- public void init(RedisConnectionFactory connectionFactory) {
- // 如果已经初始化成功了,就立刻退出,不重复初始化
- if(this.isInit) {
- return;
- }
-
- // 重写 SaSession 生成策略
- SaStrategy.instance.createSession = (sessionId) -> new SaSessionForFastjsonCustomized(sessionId);
-
- // 指定相应的序列化方案
- StringRedisSerializer keySerializer = new StringRedisSerializer();
- StringRedisSerializer valueSerializer = new StringRedisSerializer();
-
- // 构建StringRedisTemplate
- StringRedisTemplate stringTemplate = new StringRedisTemplate();
- stringTemplate.setConnectionFactory(connectionFactory);
- stringTemplate.afterPropertiesSet();
-
- // 构建RedisTemplate
- StringRedisTemplate template = new StringRedisTemplate();
- template.setConnectionFactory(connectionFactory);
- template.setKeySerializer(keySerializer);
- template.setHashKeySerializer(keySerializer);
- template.setValueSerializer(valueSerializer);
- template.setHashValueSerializer(valueSerializer);
- template.afterPropertiesSet();
-
- // 开始初始化相关组件
- this.stringRedisTemplate = stringTemplate;
- this.objectRedisTemplate = template;
-
- // 打上标记,表示已经初始化成功,后续无需再重新初始化
- this.isInit = true;
- }
-
-
- /**
- * 获取Value,如无返空
- */
- @Override
- public String get(String key) {
- return stringRedisTemplate.opsForValue().get(key);
- }
-
- /**
- * 写入Value,并设定存活时间 (单位: 秒)
- */
- @Override
- public void set(String key, String value, long timeout) {
- if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- // 判断是否为永不过期
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- stringRedisTemplate.opsForValue().set(key, value);
- } else {
- stringRedisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
- }
- }
-
- /**
- * 修改指定key-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
- */
- @Override
- public void delete(String key) {
- stringRedisTemplate.delete(key);
- }
-
- /**
- * 获取Value的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getTimeout(String key) {
- return stringRedisTemplate.getExpire(key);
- }
-
- /**
- * 修改Value的剩余存活时间 (单位: 秒)
- */
- @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;
- }
- stringRedisTemplate.expire(key, timeout, TimeUnit.SECONDS);
- }
-
-
- /**
- * 获取Object,如无返空
- */
- @Override
- public Object getObject(String key) {
- return objectRedisTemplate.opsForValue().get(key);
- }
-
- @Override
- public SaSession getSession(String sessionId) {
- Object obj = getObject(sessionId);
- if (obj == null) {
- return null;
- }
- return JSON.parseObject(obj.toString(), SaSessionForFastjsonCustomized.class);
- }
-
- /**
- * 写入Object,并设定存活时间 (单位: 秒)
- */
- @Override
- public void setObject(String key, Object object, long timeout) {
- if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- String toValue = JSON.toJSONString(object);
- // 判断是否为永不过期
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- objectRedisTemplate.opsForValue().set(key, toValue);
- } else {
- objectRedisTemplate.opsForValue().set(key, toValue, timeout, TimeUnit.SECONDS);
- }
- }
-
- /**
- * 更新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
- */
- @Override
- public void deleteObject(String key) {
- objectRedisTemplate.delete(key);
- }
-
- /**
- * 获取Object的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getObjectTimeout(String key) {
- return objectRedisTemplate.getExpire(key);
- }
-
- /**
- * 修改Object的剩余存活时间 (单位: 秒)
- */
- @Override
- public void updateObjectTimeout(String key, long timeout) {
- // 判断是否想要设置为永久
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- long expire = getObjectTimeout(key);
- if(expire == SaTokenDao.NEVER_EXPIRE) {
- // 如果其已经被设置为永久,则不作任何处理
- } else {
- // 如果尚未被设置为永久,那么再次set一次
- this.setObject(key, this.getObject(key), timeout);
- }
- return;
- }
- objectRedisTemplate.expire(key, timeout, TimeUnit.SECONDS);
- }
-
-
-
- /**
- * 搜索数据
- */
- @Override
- public List searchData(String prefix, String keyword, int start, int size, boolean sortType) {
- Set keys = stringRedisTemplate.keys(prefix + "*" + keyword + "*");
- List list = new ArrayList<>(keys);
- return SaFoxUtil.searchList(list, start, size, sortType);
- }
-
-
-}
diff --git a/sa-token-plugin/sa-token-redis-fastjson/src/main/resources/META-INF/spring.factories b/sa-token-plugin/sa-token-redis-fastjson/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index b88e60f8..00000000
--- a/sa-token-plugin/sa-token-redis-fastjson/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1 +0,0 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.dev33.satoken.dao.SaTokenDaoRedisFastjson
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-redis-fastjson/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sa-token-plugin/sa-token-redis-fastjson/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 55cfbd45..00000000
--- a/sa-token-plugin/sa-token-redis-fastjson/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-cn.dev33.satoken.dao.SaTokenDaoRedisFastjson
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson2.java b/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson2.java
deleted file mode 100644
index e53944db..00000000
--- a/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson2.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright 2020-2099 sa-token.cc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package cn.dev33.satoken.dao;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-import org.springframework.stereotype.Component;
-
-import com.alibaba.fastjson2.JSON;
-
-import cn.dev33.satoken.session.SaSession;
-import cn.dev33.satoken.strategy.SaStrategy;
-import cn.dev33.satoken.util.SaFoxUtil;
-
-/**
- * Sa-Token 持久层实现 [ Redis存储、fastjson2序列化 ]
- *
- * @author sikadai
- * @since 1.34.0
- */
-@Component
-public class SaTokenDaoRedisFastjson2 implements SaTokenDao {
-
- /**
- * String 读写专用
- */
- public StringRedisTemplate stringRedisTemplate;
-
- /**
- * Object 读写专用
- */
- public StringRedisTemplate objectRedisTemplate;
-
- /**
- * 标记:是否已初始化成功
- */
- public boolean isInit;
-
- @Autowired
- public void init(RedisConnectionFactory connectionFactory) {
- // 如果已经初始化成功了,就立刻退出,不重复初始化
- if(this.isInit) {
- return;
- }
-
- // 重写 SaSession 生成策略
- SaStrategy.instance.createSession = (sessionId) -> new SaSessionForFastjson2Customized(sessionId);
-
- // 指定相应的序列化方案
- StringRedisSerializer keySerializer = new StringRedisSerializer();
- StringRedisSerializer valueSerializer = new StringRedisSerializer();
-
- // 构建StringRedisTemplate
- StringRedisTemplate stringTemplate = new StringRedisTemplate();
- stringTemplate.setConnectionFactory(connectionFactory);
- stringTemplate.afterPropertiesSet();
-
- // 构建RedisTemplate
- StringRedisTemplate template = new StringRedisTemplate();
- template.setConnectionFactory(connectionFactory);
- template.setKeySerializer(keySerializer);
- template.setHashKeySerializer(keySerializer);
- template.setValueSerializer(valueSerializer);
- template.setHashValueSerializer(valueSerializer);
- template.afterPropertiesSet();
-
- // 开始初始化相关组件
- this.stringRedisTemplate = stringTemplate;
- this.objectRedisTemplate = template;
-
- // 打上标记,表示已经初始化成功,后续无需再重新初始化
- this.isInit = true;
- }
-
-
- /**
- * 获取Value,如无返空
- */
- @Override
- public String get(String key) {
- return stringRedisTemplate.opsForValue().get(key);
- }
-
- /**
- * 写入Value,并设定存活时间 (单位: 秒)
- */
- @Override
- public void set(String key, String value, long timeout) {
- if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- // 判断是否为永不过期
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- stringRedisTemplate.opsForValue().set(key, value);
- } else {
- stringRedisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
- }
- }
-
- /**
- * 修改指定key-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
- */
- @Override
- public void delete(String key) {
- stringRedisTemplate.delete(key);
- }
-
- /**
- * 获取Value的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getTimeout(String key) {
- return stringRedisTemplate.getExpire(key);
- }
-
- /**
- * 修改Value的剩余存活时间 (单位: 秒)
- */
- @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;
- }
- stringRedisTemplate.expire(key, timeout, TimeUnit.SECONDS);
- }
-
-
- /**
- * 获取Object,如无返空
- */
- @Override
- public Object getObject(String key) {
- return objectRedisTemplate.opsForValue().get(key);
- }
-
- @Override
- public SaSession getSession(String sessionId) {
- Object obj = getObject(sessionId);
- if (obj == null) {
- return null;
- }
- return JSON.parseObject(obj.toString(), SaSessionForFastjson2Customized.class);
- }
-
- /**
- * 写入Object,并设定存活时间 (单位: 秒)
- */
- @Override
- public void setObject(String key, Object object, long timeout) {
- if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- String toValue = JSON.toJSONString(object);
- // 判断是否为永不过期
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- objectRedisTemplate.opsForValue().set(key, toValue);
- } else {
- objectRedisTemplate.opsForValue().set(key, toValue, timeout, TimeUnit.SECONDS);
- }
- }
-
- /**
- * 更新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
- */
- @Override
- public void deleteObject(String key) {
- objectRedisTemplate.delete(key);
- }
-
- /**
- * 获取Object的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getObjectTimeout(String key) {
- return objectRedisTemplate.getExpire(key);
- }
-
- /**
- * 修改Object的剩余存活时间 (单位: 秒)
- */
- @Override
- public void updateObjectTimeout(String key, long timeout) {
- // 判断是否想要设置为永久
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- long expire = getObjectTimeout(key);
- if(expire == SaTokenDao.NEVER_EXPIRE) {
- // 如果其已经被设置为永久,则不作任何处理
- } else {
- // 如果尚未被设置为永久,那么再次set一次
- this.setObject(key, this.getObject(key), timeout);
- }
- return;
- }
- objectRedisTemplate.expire(key, timeout, TimeUnit.SECONDS);
- }
-
-
-
- /**
- * 搜索数据
- */
- @Override
- public List searchData(String prefix, String keyword, int start, int size, boolean sortType) {
- Set keys = stringRedisTemplate.keys(prefix + "*" + keyword + "*");
- List list = new ArrayList<>(keys);
- return SaFoxUtil.searchList(list, start, size, sortType);
- }
-
-
-}
diff --git a/sa-token-plugin/sa-token-redis-fastjson2/src/main/resources/META-INF/spring.factories b/sa-token-plugin/sa-token-redis-fastjson2/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index 8774edc6..00000000
--- a/sa-token-plugin/sa-token-redis-fastjson2/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1 +0,0 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.dev33.satoken.dao.SaTokenDaoRedisFastjson2
\ No newline at end of file
diff --git a/sa-token-plugin/sa-token-redis-fastjson2/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sa-token-plugin/sa-token-redis-fastjson2/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index c15b81e2..00000000
--- a/sa-token-plugin/sa-token-redis-fastjson2/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-cn.dev33.satoken.dao.SaTokenDaoRedisFastjson2
\ No newline at end of file