From d551066238e344f05e962ead5d663c2cc0a02f40 Mon Sep 17 00:00:00 2001
From: click33 <2393584716@qq.com>
Date: Mon, 24 Feb 2025 01:59:51 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20base64=E3=80=81hex?=
=?UTF-8?q?=E3=80=81ISO=5F8859=5F1=20=E4=B8=89=E7=A7=8D=E7=BC=96=E7=A0=81?=
=?UTF-8?q?=E7=9A=84=E5=BA=8F=E5=88=97=E5=8C=96=E6=96=B9=E6=A1=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/cn/dev33/satoken/SaManager.java | 4 +-
...va => SaTokenDaoByObjectFollowString.java} | 10 +--
.../impl/SaSerializerTemplateForJdk.java | 78 +++++++++++++++++++
.../SaSerializerTemplateForJdkUseBase64.java | 38 +++++++++
.../SaSerializerTemplateForJdkUseHex.java | 38 +++++++++
...SerializerTemplateForJdkUseISO_8859_1.java | 38 +++++++++
.../SaSerializerTemplateForJson.java} | 7 +-
.../java/cn/dev33/satoken/util/SaHexUtil.java | 74 ++++++++++++++++++
sa-token-demo/pom.xml | 10 +--
.../satoken/dao/alone/SaAloneRedisInject.java | 1 +
.../dao/SaTokenDaoForRedisTemplate.java | 4 +-
...enDaoForRedisTemplateUseJdkSerializer.java | 2 +-
.../dao/SaTokenDaoForRedisTemplate.java | 4 +-
.../satoken/dao/SaTokenDaoForRedisson.java | 4 +-
14 files changed, 290 insertions(+), 22 deletions(-)
rename sa-token-core/src/main/java/cn/dev33/satoken/dao/auto/{SaTokenDaoByObjectFollowStringUseJsonSerializer.java => SaTokenDaoByObjectFollowString.java} (83%)
create mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdk.java
create mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseBase64.java
create mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseHex.java
create mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseISO_8859_1.java
rename sa-token-core/src/main/java/cn/dev33/satoken/serializer/{SaSerializerTemplateDefaultImpl.java => impl/SaSerializerTemplateForJson.java} (81%)
create mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/util/SaHexUtil.java
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java
index 43c6714e..19c561da 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java
@@ -31,7 +31,7 @@ import cn.dev33.satoken.log.SaLog;
import cn.dev33.satoken.log.SaLogForConsole;
import cn.dev33.satoken.same.SaSameTemplate;
import cn.dev33.satoken.serializer.SaSerializerTemplate;
-import cn.dev33.satoken.serializer.SaSerializerTemplateDefaultImpl;
+import cn.dev33.satoken.serializer.impl.SaSerializerTemplateForJson;
import cn.dev33.satoken.sign.SaSignTemplate;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.stp.StpInterfaceDefaultImpl;
@@ -240,7 +240,7 @@ public class SaManager {
if (saSerializerTemplate == null) {
synchronized (SaManager.class) {
if (saSerializerTemplate == null) {
- SaManager.saSerializerTemplate = new SaSerializerTemplateDefaultImpl();
+ SaManager.saSerializerTemplate = new SaSerializerTemplateForJson();
}
}
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/dao/auto/SaTokenDaoByObjectFollowStringUseJsonSerializer.java b/sa-token-core/src/main/java/cn/dev33/satoken/dao/auto/SaTokenDaoByObjectFollowString.java
similarity index 83%
rename from sa-token-core/src/main/java/cn/dev33/satoken/dao/auto/SaTokenDaoByObjectFollowStringUseJsonSerializer.java
rename to sa-token-core/src/main/java/cn/dev33/satoken/dao/auto/SaTokenDaoByObjectFollowString.java
index dce09e7c..f2c2a7da 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/dao/auto/SaTokenDaoByObjectFollowStringUseJsonSerializer.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/dao/auto/SaTokenDaoByObjectFollowString.java
@@ -18,12 +18,12 @@ package cn.dev33.satoken.dao.auto;
import cn.dev33.satoken.SaManager;
/**
- * SaTokenDao 次级实现,以 JSON 序列化方式实现 Object 读写相关操作
+ * SaTokenDao 次级实现,Object 读写跟随 String 读写
*
* @author click33
* @since 1.41.0
*/
-public interface SaTokenDaoByObjectFollowStringUseJsonSerializer extends SaTokenDaoBySessionFollowObject {
+public interface SaTokenDaoByObjectFollowString extends SaTokenDaoBySessionFollowObject {
// --------------------- Object 读写 ---------------------
@@ -36,7 +36,7 @@ public interface SaTokenDaoByObjectFollowStringUseJsonSerializer extends SaToken
@Override
default Object getObject(String key) {
String jsonString = get(key);
- return SaManager.getSaJsonTemplate().jsonToObject(jsonString);
+ return SaManager.getSaSerializerTemplate().stringToObject(jsonString);
}
/**
@@ -48,7 +48,7 @@ public interface SaTokenDaoByObjectFollowStringUseJsonSerializer extends SaToken
*/
@Override
default void setObject(String key, Object object, long timeout) {
- String jsonString = SaManager.getSaJsonTemplate().objectToJson(object);
+ String jsonString = SaManager.getSaSerializerTemplate().objectToString(object);
set(key, jsonString, timeout);
}
@@ -59,7 +59,7 @@ public interface SaTokenDaoByObjectFollowStringUseJsonSerializer extends SaToken
*/
@Override
default void updateObject(String key, Object object) {
- String jsonString = SaManager.getSaJsonTemplate().objectToJson(object);
+ String jsonString = SaManager.getSaSerializerTemplate().objectToString(object);
update(key, jsonString);
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdk.java b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdk.java
new file mode 100644
index 00000000..e2f76210
--- /dev/null
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdk.java
@@ -0,0 +1,78 @@
+/*
+ * 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.serializer.impl;
+
+import cn.dev33.satoken.exception.SaTokenException;
+import cn.dev33.satoken.serializer.SaSerializerTemplate;
+
+import java.io.*;
+
+/**
+ * 序列化器次级实现: jdk序列化
+ *
+ * @author click33
+ * @since 1.41.0
+ */
+public interface SaSerializerTemplateForJdk extends SaSerializerTemplate {
+
+ @Override
+ default String objectToString(Object obj) {
+ if (obj == null) {
+ return null;
+ }
+ try (
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos)
+ ) {
+ oos.writeObject(obj);
+ byte[] bytes = baos.toByteArray();
+ return bytesToString(bytes);
+ } catch (IOException e) {
+ throw new SaTokenException(e);
+ }
+ }
+
+ @Override
+ default Object stringToObject(String str) {
+ if(str == null) {
+ return null;
+ }
+ byte[] data = stringToBytes(str);
+ try (
+ ByteArrayInputStream bais = new ByteArrayInputStream(data);
+ ObjectInputStream ois = new ObjectInputStream(bais)
+ ) {
+ return ois.readObject();
+ } catch (IOException | ClassNotFoundException e) {
+ throw new SaTokenException(e);
+ }
+ }
+
+ /**
+ * byte[] 转换为 String
+ * @param bytes /
+ * @return /
+ */
+ String bytesToString(byte[] bytes);
+
+ /**
+ * String 转换为 byte[]
+ * @param str /
+ * @return /
+ */
+ byte[] stringToBytes(String str);
+
+}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseBase64.java b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseBase64.java
new file mode 100644
index 00000000..cee77795
--- /dev/null
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseBase64.java
@@ -0,0 +1,38 @@
+/*
+ * 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.serializer.impl;
+
+import java.util.Base64;
+
+/**
+ * 序列化器: jdk序列化、Base64 编码 (体积+33%)
+ *
+ * @author click33
+ * @since 1.41.0
+ */
+public class SaSerializerTemplateForJdkUseBase64 implements SaSerializerTemplateForJdk {
+
+ @Override
+ public String bytesToString(byte[] bytes) {
+ return Base64.getEncoder().encodeToString(bytes);
+ }
+
+ @Override
+ public byte[] stringToBytes(String str) {
+ return Base64.getDecoder().decode(str);
+ }
+
+}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseHex.java b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseHex.java
new file mode 100644
index 00000000..258f2987
--- /dev/null
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseHex.java
@@ -0,0 +1,38 @@
+/*
+ * 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.serializer.impl;
+
+import cn.dev33.satoken.util.SaHexUtil;
+
+/**
+ * 序列化器: jdk序列化、16 进制编码 (体积+100%)
+ *
+ * @author click33
+ * @since 1.41.0
+ */
+public class SaSerializerTemplateForJdkUseHex implements SaSerializerTemplateForJdk {
+
+ @Override
+ public String bytesToString(byte[] bytes) {
+ return SaHexUtil.bytesToHex(bytes);
+ }
+
+ @Override
+ public byte[] stringToBytes(String str) {
+ return SaHexUtil.hexToBytes(str);
+ }
+
+}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseISO_8859_1.java b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseISO_8859_1.java
new file mode 100644
index 00000000..b70fe76d
--- /dev/null
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJdkUseISO_8859_1.java
@@ -0,0 +1,38 @@
+/*
+ * 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.serializer.impl;
+
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 序列化器: jdk序列化、ISO-8859-1 编码 (体积无变化)
+ *
+ * @author click33
+ * @since 1.41.0
+ */
+public class SaSerializerTemplateForJdkUseISO_8859_1 implements SaSerializerTemplateForJdk {
+
+ @Override
+ public String bytesToString(byte[] bytes) {
+ return new String(bytes, StandardCharsets.ISO_8859_1);
+ }
+
+ @Override
+ public byte[] stringToBytes(String str) {
+ return str.getBytes(StandardCharsets.ISO_8859_1);
+ }
+
+}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/serializer/SaSerializerTemplateDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJson.java
similarity index 81%
rename from sa-token-core/src/main/java/cn/dev33/satoken/serializer/SaSerializerTemplateDefaultImpl.java
rename to sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJson.java
index 321c9c1b..129e1376 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/serializer/SaSerializerTemplateDefaultImpl.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/serializer/impl/SaSerializerTemplateForJson.java
@@ -13,17 +13,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package cn.dev33.satoken.serializer;
+package cn.dev33.satoken.serializer.impl;
import cn.dev33.satoken.SaManager;
+import cn.dev33.satoken.serializer.SaSerializerTemplate;
/**
- * 序列化器,默认实现类 (使用 json 转换器)
+ * 序列化器: 使用 json 转换器
*
* @author click33
* @since 1.41.0
*/
-public class SaSerializerTemplateDefaultImpl implements SaSerializerTemplate {
+public class SaSerializerTemplateForJson implements SaSerializerTemplate {
@Override
public String objectToString(Object obj) {
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaHexUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaHexUtil.java
new file mode 100644
index 00000000..bc2b3d81
--- /dev/null
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaHexUtil.java
@@ -0,0 +1,74 @@
+/*
+ * 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.util;
+
+/**
+ * 十六进制工具类
+ *
+ * @author deepseek
+ * @since 2025/2/24
+ */
+public class SaHexUtil {
+
+ // 十六进制字符表(大写)
+ private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
+
+ /**
+ * 将字节数组转换为十六进制字符串(JDK8兼容)
+ * @param bytes 要转换的字节数组
+ * @return 十六进制字符串(大写)
+ */
+ public static String bytesToHex(byte[] bytes) {
+ if (bytes == null) return null;
+ char[] hexChars = new char[bytes.length * 2];
+ for (int i = 0; i < bytes.length; i++) {
+ int v = bytes[i] & 0xFF;
+ hexChars[i * 2] = HEX_ARRAY[v >>> 4];
+ hexChars[i * 2 + 1] = HEX_ARRAY[v & 0x0F];
+ }
+ return new String(hexChars);
+ }
+
+ /**
+ * 将十六进制字符串转换为字节数组(JDK8兼容)
+ * @param hexString 有效的十六进制字符串(不区分大小写)
+ * @return 对应的字节数组
+ * @throws IllegalArgumentException 输入字符串格式错误时抛出异常
+ */
+ public static byte[] hexToBytes(String hexString) {
+ if (hexString == null) return null;
+ int len = hexString.length();
+ if (len % 2 != 0) {
+ throw new IllegalArgumentException("Hex string must have even length");
+ }
+
+ byte[] data = new byte[len / 2];
+ for (int i = 0; i < len; i += 2) {
+ int high = Character.digit(hexString.charAt(i), 16);
+ int low = Character.digit(hexString.charAt(i+1), 16);
+
+ if (high == -1 || low == -1) {
+ throw new IllegalArgumentException(
+ "Invalid hex character at position " + i + " or " + (i+1)
+ );
+ }
+
+ data[i/2] = (byte) ((high << 4) + low);
+ }
+ return data;
+ }
+
+}
\ No newline at end of file
diff --git a/sa-token-demo/pom.xml b/sa-token-demo/pom.xml
index 76af1051..8b90f1a9 100644
--- a/sa-token-demo/pom.xml
+++ b/sa-token-demo/pom.xml
@@ -26,7 +26,7 @@
sa-token-demo-oauth2/sa-token-demo-oauth2-client
sa-token-demo-quick-login
sa-token-demo-remember-me/sa-token-demo-remember-me-server
- sa-token-demo-solon
+
sa-token-demo-solon-redisson
sa-token-demo-springboot
sa-token-demo-springboot3-redis
@@ -39,10 +39,10 @@
sa-token-demo-sso/sa-token-demo-sso3-client
sa-token-demo-sso/sa-token-demo-sso3-client-test2
sa-token-demo-sso/sa-token-demo-sso3-client-nosdk
- sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon
- sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon
- sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon
- sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon
+
+
+
+
sa-token-demo-test
sa-token-demo-thymeleaf
sa-token-demo-webflux
diff --git a/sa-token-plugin/sa-token-alone-redis/src/main/java/cn/dev33/satoken/dao/alone/SaAloneRedisInject.java b/sa-token-plugin/sa-token-alone-redis/src/main/java/cn/dev33/satoken/dao/alone/SaAloneRedisInject.java
index 7fc2938d..573d0e0c 100644
--- a/sa-token-plugin/sa-token-alone-redis/src/main/java/cn/dev33/satoken/dao/alone/SaAloneRedisInject.java
+++ b/sa-token-plugin/sa-token-alone-redis/src/main/java/cn/dev33/satoken/dao/alone/SaAloneRedisInject.java
@@ -229,6 +229,7 @@ public class SaAloneRedisInject implements EnvironmentAware{
}
// 至此,说明开发者一个 redis 插件也没引入,或者引入的 redis 插件不在 sa-token-alone-redis 的支持范围内
+ throw new SaTokenException("未引入 sa-token-redis-xxx 相关插件,或引入的插件不在 Alone-Redis 支持范围内");
} catch (Exception e) {
e.printStackTrace();
diff --git a/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java b/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java
index 38b3574c..28f87a5a 100644
--- a/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java
+++ b/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java
@@ -15,7 +15,7 @@
*/
package cn.dev33.satoken.dao;
-import cn.dev33.satoken.dao.auto.SaTokenDaoByObjectFollowStringUseJsonSerializer;
+import cn.dev33.satoken.dao.auto.SaTokenDaoByObjectFollowString;
import cn.dev33.satoken.util.SaFoxUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.RedisConnectionFactory;
@@ -33,7 +33,7 @@ import java.util.concurrent.TimeUnit;
* @author click33
* @since 1.34.0
*/
-public class SaTokenDaoForRedisTemplate implements SaTokenDaoByObjectFollowStringUseJsonSerializer {
+public class SaTokenDaoForRedisTemplate implements SaTokenDaoByObjectFollowString {
public StringRedisTemplate stringRedisTemplate;
diff --git a/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplateUseJdkSerializer.java b/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplateUseJdkSerializer.java
index f7a4e064..04c38cc6 100644
--- a/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplateUseJdkSerializer.java
+++ b/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplateUseJdkSerializer.java
@@ -50,7 +50,7 @@ public class SaTokenDaoForRedisTemplateUseJdkSerializer extends SaTokenDaoForRed
template.setValueSerializer(valueSerializer);
template.setHashValueSerializer(valueSerializer);
template.afterPropertiesSet();
-
+ this.objectRedisTemplate = template;
}
diff --git a/sa-token-plugin/sa-token-redis-template/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java b/sa-token-plugin/sa-token-redis-template/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java
index c2e9fef7..aa7af78e 100644
--- a/sa-token-plugin/sa-token-redis-template/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java
+++ b/sa-token-plugin/sa-token-redis-template/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java
@@ -15,7 +15,7 @@
*/
package cn.dev33.satoken.dao;
-import cn.dev33.satoken.dao.auto.SaTokenDaoByObjectFollowStringUseJsonSerializer;
+import cn.dev33.satoken.dao.auto.SaTokenDaoByObjectFollowString;
import cn.dev33.satoken.util.SaFoxUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.RedisConnectionFactory;
@@ -32,7 +32,7 @@ import java.util.concurrent.TimeUnit;
* @author click33
* @since 1.34.0
*/
-public class SaTokenDaoForRedisTemplate implements SaTokenDaoByObjectFollowStringUseJsonSerializer {
+public class SaTokenDaoForRedisTemplate implements SaTokenDaoByObjectFollowString {
public StringRedisTemplate stringRedisTemplate;
diff --git a/sa-token-plugin/sa-token-redisson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisson.java b/sa-token-plugin/sa-token-redisson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisson.java
index 71a8a692..65bea7d8 100644
--- a/sa-token-plugin/sa-token-redisson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisson.java
+++ b/sa-token-plugin/sa-token-redisson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisson.java
@@ -15,7 +15,7 @@
*/
package cn.dev33.satoken.dao;
-import cn.dev33.satoken.dao.auto.SaTokenDaoByObjectFollowStringUseJsonSerializer;
+import cn.dev33.satoken.dao.auto.SaTokenDaoByObjectFollowString;
import cn.dev33.satoken.util.SaFoxUtil;
import org.redisson.api.RBatch;
import org.redisson.api.RBucket;
@@ -34,7 +34,7 @@ import java.util.stream.Stream;
* @author noear
* @since 1.34.0
*/
-public class SaTokenDaoForRedisson implements SaTokenDaoByObjectFollowStringUseJsonSerializer {
+public class SaTokenDaoForRedisson implements SaTokenDaoByObjectFollowString {
/**
* redisson 客户端