From 20518259aaf78b4d48de565ab2167f6ab7948316 Mon Sep 17 00:00:00 2001 From: redkale Date: Wed, 11 Sep 2024 17:23:32 +0800 Subject: [PATCH] Cached.checkName --- .../org/redkale/cached/spi/CachedAction.java | 25 ++++++++++++++++++- .../cached/spi/CachedManagerService.java | 11 +++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/redkale/cached/spi/CachedAction.java b/src/main/java/org/redkale/cached/spi/CachedAction.java index 40da64b2f..5678842b2 100644 --- a/src/main/java/org/redkale/cached/spi/CachedAction.java +++ b/src/main/java/org/redkale/cached/spi/CachedAction.java @@ -17,6 +17,7 @@ import org.redkale.convert.json.JsonConvert; import org.redkale.inject.ResourceFactory; import org.redkale.util.Environment; import org.redkale.util.MultiHashKey; +import org.redkale.util.RedkaleException; import org.redkale.util.ThrowSupplier; import org.redkale.util.TypeToken; @@ -100,7 +101,7 @@ public class CachedAction { String init(ResourceFactory resourceFactory, Object service) { this.manager = resourceFactory.load(environment.getPropertyValue(cached.getManager()), CachedManager.class); - this.name = environment.getPropertyValue(cached.getName()); + this.name = checkName(environment.getPropertyValue(cached.getName())); this.key = environment.getPropertyValue(cached.getKey()); if (key.startsWith("@")) { // 动态加载缓存key生成器 String generatorName = key.substring(1); @@ -116,6 +117,28 @@ public class CachedAction { return key; } + /** + * 检查name是否含特殊字符 + * + * @param value 参数 + * @return value + */ + protected String checkName(String value) { + if (value != null && !value.isEmpty()) { + for (char ch : value.toCharArray()) { + if (!((ch >= '0' && ch <= '9') + || (ch >= 'a' && ch <= 'z') + || (ch >= 'A' && ch <= 'Z') + || ch == '-' + || ch == '_' + || ch == '.')) { // 不能含特殊字符: # @ + throw new RedkaleException("name only contains 0-9 a-z A-Z . - _"); + } + } + } + return value; + } + @ClassDepends public T get(ThrowSupplier supplier, Object... args) { if (async) { diff --git a/src/main/java/org/redkale/cached/spi/CachedManagerService.java b/src/main/java/org/redkale/cached/spi/CachedManagerService.java index 6e4f3552c..250c2bdbb 100644 --- a/src/main/java/org/redkale/cached/spi/CachedManagerService.java +++ b/src/main/java/org/redkale/cached/spi/CachedManagerService.java @@ -137,7 +137,7 @@ public class CachedManagerService implements CachedManager, CachedActionFunc, Se } /** - * 检查name是否含特殊字符 + * 检查schema是否含特殊字符 * * @param value 参数 * @return value @@ -145,8 +145,13 @@ public class CachedManagerService implements CachedManager, CachedActionFunc, Se protected String checkSchema(String value) { if (value != null && !value.isEmpty()) { for (char ch : value.toCharArray()) { - if (ch == ':' || ch == '#' || ch == '@') { // 不能含特殊字符 - throw new RedkaleException("schema cannot contains : # @"); + if (!((ch >= '0' && ch <= '9') + || (ch >= 'a' && ch <= 'z') + || (ch >= 'A' && ch <= 'Z') + || ch == '-' + || ch == '_' + || ch == '.')) { // 不能含特殊字符: # @ + throw new RedkaleException("schema only contains 0-9 a-z A-Z . - _"); } } }