diff --git a/kernel-d-security/pom.xml b/kernel-d-security/pom.xml
index c20e06b3e..1b8879693 100644
--- a/kernel-d-security/pom.xml
+++ b/kernel-d-security/pom.xml
@@ -17,14 +17,15 @@
security-api
+ security-sdk-allow-cors
+ security-sdk-black-white
security-sdk-captcha
security-sdk-clear-threadlocal
- security-sdk-allow-cors
security-sdk-count
- security-sdk-xss
- security-sdk-request-encrypt-and-decode
security-sdk-database-field
security-sdk-guomi
+ security-sdk-request-encrypt-and-decode
+ security-sdk-xss
security-spring-boot-starter
diff --git a/kernel-d-security/security-sdk-black-white/README.md b/kernel-d-security/security-sdk-black-white/README.md
new file mode 100644
index 000000000..c303d92a1
--- /dev/null
+++ b/kernel-d-security/security-sdk-black-white/README.md
@@ -0,0 +1 @@
+黑白名单的校验模块
\ No newline at end of file
diff --git a/kernel-d-security/security-sdk-black-white/pom.xml b/kernel-d-security/security-sdk-black-white/pom.xml
new file mode 100644
index 000000000..8aa2bd383
--- /dev/null
+++ b/kernel-d-security/security-sdk-black-white/pom.xml
@@ -0,0 +1,51 @@
+
+
+ 4.0.0
+
+
+ com.javaguns.roses
+ kernel-d-security
+ 8.1.9
+ ../pom.xml
+
+
+ security-sdk-black-white
+
+
+
+
+
+ com.javaguns.roses
+ security-api
+ ${roses.version}
+
+
+
+
+ com.javaguns.roses
+ cache-api
+ ${roses.version}
+
+
+ com.javaguns.roses
+ cache-sdk-memory
+ ${roses.version}
+ true
+
+
+ com.javaguns.roses
+ cache-sdk-redis
+ ${roses.version}
+ true
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
diff --git a/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/BlackListService.java b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/BlackListService.java
new file mode 100644
index 000000000..b5916485d
--- /dev/null
+++ b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/BlackListService.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * 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.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.security.blackwhite;
+
+import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
+import cn.stylefeng.roses.kernel.security.api.BlackListApi;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+
+/**
+ * 黑名单的实现
+ *
+ * 黑名单的数据会在访问资源时被限制
+ *
+ * @author fengshuonan
+ * @date 2020/11/20 15:52
+ */
+@Service
+public class BlackListService implements BlackListApi {
+
+ private final CacheOperatorApi cacheOperatorApi;
+
+ public BlackListService(CacheOperatorApi cacheOperatorApi) {
+ this.cacheOperatorApi = cacheOperatorApi;
+ }
+
+ @Override
+ public void addBlackItem(String content) {
+ cacheOperatorApi.put(content, content);
+ }
+
+ @Override
+ public void removeBlackItem(String content) {
+ cacheOperatorApi.remove(content);
+ }
+
+ @Override
+ public Collection getBlackList() {
+ return cacheOperatorApi.getAllKeys();
+ }
+
+ @Override
+ public boolean contains(String content) {
+ return cacheOperatorApi.contains(content);
+ }
+
+}
diff --git a/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/WhiteListService.java b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/WhiteListService.java
new file mode 100644
index 000000000..08461370f
--- /dev/null
+++ b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/WhiteListService.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * 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.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.security.blackwhite;
+
+import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
+import cn.stylefeng.roses.kernel.security.api.WhiteListApi;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+
+/**
+ * 白名单的实现
+ *
+ * 白名单的数据在访问资源时不受限
+ *
+ * @author fengshuonan
+ * @date 2020/11/20 15:53
+ */
+@Service
+public class WhiteListService implements WhiteListApi {
+
+ private final CacheOperatorApi cacheOperatorApi;
+
+ public WhiteListService(CacheOperatorApi cacheOperatorApi) {
+ this.cacheOperatorApi = cacheOperatorApi;
+ }
+
+ @Override
+ public void addWhiteItem(String content) {
+ cacheOperatorApi.put(content, content);
+ }
+
+ @Override
+ public void removeWhiteItem(String content) {
+ cacheOperatorApi.remove(content);
+ }
+
+ @Override
+ public Collection getWhiteList() {
+ return cacheOperatorApi.getAllKeys();
+ }
+
+ @Override
+ public boolean contains(String content) {
+ return cacheOperatorApi.contains(content);
+ }
+
+}
diff --git a/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListMemoryCache.java b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListMemoryCache.java
new file mode 100644
index 000000000..7386f24da
--- /dev/null
+++ b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListMemoryCache.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * 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.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.security.blackwhite.cache;
+
+import cn.hutool.cache.impl.TimedCache;
+import cn.stylefeng.roses.kernel.cache.memory.AbstractMemoryCacheOperator;
+import cn.stylefeng.roses.kernel.security.api.constants.CounterConstants;
+
+/**
+ * 黑名单用户的缓存
+ *
+ * @author fengshuonan
+ * @date 2020/11/20 15:50
+ */
+public class BlackListMemoryCache extends AbstractMemoryCacheOperator {
+
+ public BlackListMemoryCache(TimedCache timedCache) {
+ super(timedCache);
+ }
+
+ @Override
+ public String getCommonKeyPrefix() {
+ return CounterConstants.BLACK_LIST_CACHE_KEY_PREFIX;
+ }
+
+}
diff --git a/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListRedisCache.java b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListRedisCache.java
new file mode 100644
index 000000000..4ceb60905
--- /dev/null
+++ b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListRedisCache.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * 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.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.security.blackwhite.cache;
+
+import cn.stylefeng.roses.kernel.cache.redis.AbstractRedisCacheOperator;
+import cn.stylefeng.roses.kernel.security.api.constants.CounterConstants;
+import org.springframework.data.redis.core.RedisTemplate;
+
+
+/**
+ * 黑名单用户的缓存
+ *
+ * @author fengshuonan
+ * @date 2020/11/20 15:50
+ */
+public class BlackListRedisCache extends AbstractRedisCacheOperator {
+
+ public BlackListRedisCache(RedisTemplate redisTemplate) {
+ super(redisTemplate);
+ }
+
+ @Override
+ public String getCommonKeyPrefix() {
+ return CounterConstants.BLACK_LIST_CACHE_KEY_PREFIX;
+ }
+
+}
diff --git a/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListMemoryCache.java b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListMemoryCache.java
new file mode 100644
index 000000000..0e974e80e
--- /dev/null
+++ b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListMemoryCache.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * 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.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.security.blackwhite.cache;
+
+import cn.hutool.cache.impl.TimedCache;
+import cn.stylefeng.roses.kernel.cache.memory.AbstractMemoryCacheOperator;
+import cn.stylefeng.roses.kernel.security.api.constants.CounterConstants;
+
+/**
+ * 白名单的缓存
+ *
+ * @author fengshuonan
+ * @date 2020/11/15 15:26
+ */
+public class WhiteListMemoryCache extends AbstractMemoryCacheOperator {
+
+ public WhiteListMemoryCache(TimedCache timedCache) {
+ super(timedCache);
+ }
+
+ @Override
+ public String getCommonKeyPrefix() {
+ return CounterConstants.WHITE_LIST_CACHE_KEY_PREFIX;
+ }
+
+}
diff --git a/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListRedisCache.java b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListRedisCache.java
new file mode 100644
index 000000000..a7e0e22ac
--- /dev/null
+++ b/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListRedisCache.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * 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.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.security.blackwhite.cache;
+
+import cn.stylefeng.roses.kernel.cache.redis.AbstractRedisCacheOperator;
+import cn.stylefeng.roses.kernel.security.api.constants.CounterConstants;
+import org.springframework.data.redis.core.RedisTemplate;
+
+
+/**
+ * 白名单的缓存
+ *
+ * @author fengshuonan
+ * @date 2020/11/15 15:26
+ */
+public class WhiteListRedisCache extends AbstractRedisCacheOperator {
+
+ public WhiteListRedisCache(RedisTemplate redisTemplate) {
+ super(redisTemplate);
+ }
+
+ @Override
+ public String getCommonKeyPrefix() {
+ return CounterConstants.WHITE_LIST_CACHE_KEY_PREFIX;
+ }
+
+}
diff --git a/kernel-d-security/security-spring-boot-starter/pom.xml b/kernel-d-security/security-spring-boot-starter/pom.xml
index bddbe2b4a..883219a3a 100644
--- a/kernel-d-security/security-spring-boot-starter/pom.xml
+++ b/kernel-d-security/security-spring-boot-starter/pom.xml
@@ -59,6 +59,13 @@
${roses.version}
+
+
+ com.javaguns.roses
+ security-sdk-black-white
+ ${roses.version}
+
+
com.javaguns.roses
diff --git a/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityMemoryCacheAutoConfiguration.java b/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityMemoryCacheAutoConfiguration.java
index d645ab3a6..db0b9ada6 100644
--- a/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityMemoryCacheAutoConfiguration.java
+++ b/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityMemoryCacheAutoConfiguration.java
@@ -6,6 +6,8 @@ import cn.hutool.cache.impl.TimedCache;
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
import cn.stylefeng.roses.kernel.cache.api.constants.CacheConstants;
import cn.stylefeng.roses.kernel.security.api.constants.CaptchaConstants;
+import cn.stylefeng.roses.kernel.security.blackwhite.cache.BlackListMemoryCache;
+import cn.stylefeng.roses.kernel.security.blackwhite.cache.WhiteListMemoryCache;
import cn.stylefeng.roses.kernel.security.captcha.cache.CaptchaMemoryCache;
import cn.stylefeng.roses.kernel.security.count.cache.CountValidateMemoryCache;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
@@ -47,4 +49,28 @@ public class SecurityMemoryCacheAutoConfiguration {
return new CountValidateMemoryCache(timedCache);
}
+ /**
+ * 黑名单的缓存
+ *
+ * @author fengshuonan
+ * @since 2024/7/10 18:20
+ */
+ @Bean("blackListCache")
+ public CacheOperatorApi blackListMemoryCache() {
+ TimedCache timedCache = CacheUtil.newTimedCache(CacheConstants.NONE_EXPIRED_TIME);
+ return new BlackListMemoryCache(timedCache);
+ }
+
+ /**
+ * 白名单的缓存
+ *
+ * @author fengshuonan
+ * @since 2024/7/10 18:20
+ */
+ @Bean("whiteListCache")
+ public CacheOperatorApi whiteListMemoryCache() {
+ TimedCache timedCache = CacheUtil.newTimedCache(CacheConstants.NONE_EXPIRED_TIME);
+ return new WhiteListMemoryCache(timedCache);
+ }
+
}
diff --git a/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityRedisCacheAutoConfiguration.java b/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityRedisCacheAutoConfiguration.java
index ba41bd8e6..5a8e4acc7 100644
--- a/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityRedisCacheAutoConfiguration.java
+++ b/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityRedisCacheAutoConfiguration.java
@@ -3,6 +3,8 @@ package cn.stylefeng.roses.kernel.security.starter.cache;
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil;
+import cn.stylefeng.roses.kernel.security.blackwhite.cache.BlackListRedisCache;
+import cn.stylefeng.roses.kernel.security.blackwhite.cache.WhiteListRedisCache;
import cn.stylefeng.roses.kernel.security.captcha.cache.CaptchaRedisCache;
import cn.stylefeng.roses.kernel.security.count.cache.CountValidateRedisCache;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -46,4 +48,28 @@ public class SecurityRedisCacheAutoConfiguration {
return new CountValidateRedisCache(redisTemplate);
}
+ /**
+ * 黑名单的缓存,Redis缓存
+ *
+ * @author fengshuonan
+ * @since 2024/7/10 18:19
+ */
+ @Bean("blackListCache")
+ public CacheOperatorApi blackListRedisCache(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate redisTemplate = CreateRedisTemplateUtil.createString(redisConnectionFactory);
+ return new BlackListRedisCache(redisTemplate);
+ }
+
+ /**
+ * 白名单的缓存,Redis缓存
+ *
+ * @author fengshuonan
+ * @since 2024/7/10 18:19
+ */
+ @Bean("whiteListCache")
+ public CacheOperatorApi whiteListRedisCache(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate redisTemplate = CreateRedisTemplateUtil.createString(redisConnectionFactory);
+ return new WhiteListRedisCache(redisTemplate);
+ }
+
}