diff --git a/README.md b/README.md
index 8fcb3b42..f7b8cf47 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
-
+
@@ -15,11 +15,11 @@
-
-
+
+
-
+
@@ -164,23 +164,24 @@ continew-starter.web:
## 模块结构
-| 模块名称 | 模块说明 | 依赖版本 |
-| ---------------------------------- | --------------------------------------------------- | ------------------------------------------------------------ |
-| continew-starter-core | 核心模块:包含线程池等自动配置 | Spring Boot:3.1.7
Hutool:5.8.24
mica-ip2region:3.1.6 |
-| continew-starter-json-jackson | JSON 模块:Jackson 自动配置 | Jackson:2.15.3 |
-| continew-starter-api-doc | API 文档模块:Knife4j 自动配置 | Knife4j:4.4.0 |
-| continew-starter-web | Web 模块:跨域、全局异常、错误处理等自动配置 | Undertow:2.3.10.Final
|
+| 模块名称 | 模块说明 | 依赖版本 |
+|------------------------------------|-------------------------------------------| ------------------------------------------------------------ |
+| continew-starter-core | 核心模块:包含线程池等自动配置 | Spring Boot:3.1.7
Hutool:5.8.24
mica-ip2region:3.1.6 |
+| continew-starter-json-jackson | JSON 模块:Jackson 自动配置 | Jackson:2.15.3 |
+| continew-starter-api-doc | API 文档模块:Knife4j 自动配置 | Knife4j:4.4.0 |
+| continew-starter-security | 安全模块:密码编码器、数据库字段加密、JSON 脱敏等 | |
+| continew-starter-web | Web 模块:跨域、全局异常、错误处理等自动配置 | Undertow:2.3.10.Final
|
| continew-starter-log-httptrace-pro | 日志模块:Spring Boot Actuator HttpTrace 重置增强版 | |
-| continew-starter-storage-local | 存储模块:本地存储 | |
-| continew-starter-file-excel | 文件处理模块:Excel 相关配置 | Easy Excel:3.3.4 |
-| continew-starter-captcha-graphic | 验证码模块:图形验证码 | Easy Captcha:1.6.2 |
-| continew-starter-captcha-behavior | 验证码模块:行为验证码 | AJ-Captcha:1.3.0 |
-| continew-starter-cache-redisson | 缓存模块:Redisson 自动配置 | Redisson:3.25.2 |
-| continew-starter-data-mybatis-plus | 数据访问模块:MyBatis Plus 自动配置 | MyBatis Plus:3.5.5
dynamic-datasource-spring-boot-starter:4.2.0
P6Spy:3.9.1 |
-| continew-starter-auth-satoken | 认证模块:SaToken 自动配置 | Sa-Token:1.37.0 |
-| continew-starter-auth-justauth | 认证模块:JustAuth 自动配置 | Just Auth:1.16.6 |
-| continew-starter-messaging-mail | 消息模块:邮件 | Jakarta Mail:1.1.0 |
-| continew-starter-messaging-sms | 消息模块:短信 | SMS4J:3.0.4 |
+| continew-starter-storage-local | 存储模块:本地存储 | |
+| continew-starter-file-excel | 文件处理模块:Excel 相关配置 | Easy Excel:3.3.4 |
+| continew-starter-captcha-graphic | 验证码模块:图形验证码 | Easy Captcha:1.6.2 |
+| continew-starter-captcha-behavior | 验证码模块:行为验证码 | AJ-Captcha:1.3.0 |
+| continew-starter-cache-redisson | 缓存模块:Redisson 自动配置 | Redisson:3.25.2 |
+| continew-starter-data-mybatis-plus | 数据访问模块:MyBatis Plus 自动配置 | MyBatis Plus:3.5.5
dynamic-datasource-spring-boot-starter:4.2.0
P6Spy:3.9.1 |
+| continew-starter-auth-satoken | 认证模块:SaToken 自动配置 | Sa-Token:1.37.0 |
+| continew-starter-auth-justauth | 认证模块:JustAuth 自动配置 | Just Auth:1.16.6 |
+| continew-starter-messaging-mail | 消息模块:邮件 | Jakarta Mail:1.1.0 |
+| continew-starter-messaging-sms | 消息模块:短信 | SMS4J:3.0.4 |
| continew-starter-extension-crud | 扩展模块:BaseController 自定义 CRUD API 封装 | |
## 贡献代码
diff --git a/continew-starter-core/pom.xml b/continew-starter-core/pom.xml
index bd7f9f31..73bbd303 100644
--- a/continew-starter-core/pom.xml
+++ b/continew-starter-core/pom.xml
@@ -58,11 +58,5 @@
cn.hutool
hutool-db
-
-
-
- org.springframework.security
- spring-security-crypto
-
\ No newline at end of file
diff --git a/continew-starter-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/continew-starter-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 3aa91b9d..c64a3c92 100644
--- a/continew-starter-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/continew-starter-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,4 +1,3 @@
top.charles7c.continew.starter.core.autoconfigure.project.ProjectAutoConfiguration
top.charles7c.continew.starter.core.autoconfigure.threadpool.ThreadPoolAutoConfiguration
-top.charles7c.continew.starter.core.autoconfigure.threadpool.AsyncAutoConfiguration
-top.charles7c.continew.starter.core.autoconfigure.password.PasswordEncoderAutoConfiguration
\ No newline at end of file
+top.charles7c.continew.starter.core.autoconfigure.threadpool.AsyncAutoConfiguration
\ No newline at end of file
diff --git a/continew-starter-dependencies/pom.xml b/continew-starter-dependencies/pom.xml
index 0da67d5b..a1426fb8 100644
--- a/continew-starter-dependencies/pom.xml
+++ b/continew-starter-dependencies/pom.xml
@@ -375,6 +375,20 @@
${revision}
+
+
+ top.charles7c.continew
+ continew-starter-web
+ ${revision}
+
+
+
+
+ top.charles7c.continew
+ continew-starter-security-password
+ ${revision}
+
+
top.charles7c.continew
@@ -389,13 +403,6 @@
${revision}
-
-
- top.charles7c.continew
- continew-starter-web
- ${revision}
-
-
top.charles7c.continew
diff --git a/continew-starter-security/continew-starter-security-password/pom.xml b/continew-starter-security/continew-starter-security-password/pom.xml
new file mode 100644
index 00000000..5591cf1c
--- /dev/null
+++ b/continew-starter-security/continew-starter-security-password/pom.xml
@@ -0,0 +1,22 @@
+
+
+ 4.0.0
+
+ top.charles7c.continew
+ continew-starter-security
+ ${revision}
+
+
+ continew-starter-security-password
+ ContiNew Starter 安全模块 - 密码编码器
+
+
+
+
+ org.springframework.security
+ spring-security-crypto
+
+
+
\ No newline at end of file
diff --git a/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderAutoConfiguration.java b/continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderAutoConfiguration.java
similarity index 70%
rename from continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderAutoConfiguration.java
rename to continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderAutoConfiguration.java
index 68f5e602..c9c28cae 100644
--- a/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderAutoConfiguration.java
+++ b/continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderAutoConfiguration.java
@@ -14,9 +14,10 @@
* limitations under the License.
*/
-package top.charles7c.continew.starter.core.autoconfigure.password;
+package top.charles7c.continew.starter.security.password.autoconfigure;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -47,6 +48,7 @@ import java.util.Map;
*
*
* @author Jasmine
+ * @author Charles7c
* @since 1.3.0
*/
@AutoConfiguration
@@ -71,25 +73,15 @@ public class PasswordEncoderAutoConfiguration {
public PasswordEncoder passwordEncoder(List passwordEncoderList) {
Map encoders = new HashMap<>();
encoders.put("bcrypt", new BCryptPasswordEncoder());
- encoders.put("ldap", new org.springframework.security.crypto.password.LdapShaPasswordEncoder());
- encoders.put("MD4", new org.springframework.security.crypto.password.Md4PasswordEncoder());
- encoders.put("MD5", new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("MD5"));
- encoders.put("noop", org.springframework.security.crypto.password.NoOpPasswordEncoder.getInstance());
- encoders.put("pbkdf2", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_5());
- encoders.put("pbkdf2@SpringSecurity_v5_8", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8());
- encoders.put("scrypt", SCryptPasswordEncoder.defaultsForSpringSecurity_v4_1());
- encoders.put("scrypt@SpringSecurity_v5_8", SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8());
- encoders.put("SHA-1", new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("SHA-1"));
- encoders
- .put("SHA-256", new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("SHA-256"));
- encoders.put("sha256", new org.springframework.security.crypto.password.StandardPasswordEncoder());
- encoders.put("argon2", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_2());
- encoders.put("argon2@SpringSecurity_v5_8", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8());
+ encoders.put("pbkdf2", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8());
+ encoders.put("scrypt", SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8());
+ encoders.put("argon2", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8());
// 添加自定义的密码编解码器
if (CollUtil.isNotEmpty(passwordEncoderList)) {
- passwordEncoderList.forEach(passwordEncoder -> encoders.put(passwordEncoder.getClass()
- .getSimpleName()
- .toLowerCase(), passwordEncoder));
+ passwordEncoderList.forEach(passwordEncoder -> {
+ String simpleName = passwordEncoder.getClass().getSimpleName();
+ encoders.put(StrUtil.removeSuffix(simpleName, "PasswordEncoder").toLowerCase(), passwordEncoder);
+ });
}
String encodingId = properties.getEncodingId();
CheckUtils.throwIf(!encoders.containsKey(encodingId), "{} is not found in idToPasswordEncoder.", encodingId);
@@ -98,6 +90,6 @@ public class PasswordEncoderAutoConfiguration {
@PostConstruct
public void postConstruct() {
- log.debug("[ContiNew Starter] - Auto Configuration 'PasswordEncoder' completed initialization.");
+ log.debug("[ContiNew Starter] - Auto Configuration 'Security-PasswordEncoder' completed initialization.");
}
}
diff --git a/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderProperties.java b/continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderProperties.java
similarity index 95%
rename from continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderProperties.java
rename to continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderProperties.java
index 27211ecc..930a7fbd 100644
--- a/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderProperties.java
+++ b/continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderProperties.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package top.charles7c.continew.starter.core.autoconfigure.password;
+package top.charles7c.continew.starter.security.password.autoconfigure;
import org.springframework.boot.context.properties.ConfigurationProperties;
import top.charles7c.continew.starter.core.constant.PropertiesConstants;
diff --git a/continew-starter-security/continew-starter-security-password/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/continew-starter-security/continew-starter-security-password/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 00000000..2923ec65
--- /dev/null
+++ b/continew-starter-security/continew-starter-security-password/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+top.charles7c.continew.starter.security.password.autoconfigure.PasswordEncoderAutoConfiguration
\ No newline at end of file
diff --git a/continew-starter-security/pom.xml b/continew-starter-security/pom.xml
new file mode 100644
index 00000000..929cd151
--- /dev/null
+++ b/continew-starter-security/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ top.charles7c.continew
+ continew-starter
+ ${revision}
+
+
+ continew-starter-security
+ pom
+ ContiNew Starter 安全模块
+
+
+ continew-starter-security-password
+
+
+
+
+
+ top.charles7c.continew
+ continew-starter-core
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index dd0b57a6..f6852511 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,6 +70,7 @@
continew-starter-core
continew-starter-json
continew-starter-api-doc
+ continew-starter-security
continew-starter-web
continew-starter-log
continew-starter-storage