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 客户端