fix(core): 完善编码器配置校验

* 解决List<PasswordEncoder> 循环依赖问题
* 对用户选择的编码器做校验
This commit is contained in:
jasmine
2024-01-31 02:16:44 +00:00
committed by Charles7c
parent ab8c1aec2f
commit e1b7fea24f

View File

@@ -30,6 +30,7 @@ import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.*;
import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
import top.charles7c.continew.starter.core.constant.PropertiesConstants;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
import java.util.HashMap;
import java.util.List;
@@ -55,12 +56,9 @@ import java.util.Map;
public class PasswordEncoderAutoConfiguration {
private final PasswordEncoderProperties properties;
private final List<PasswordEncoder> passwordEncoderList;
public PasswordEncoderAutoConfiguration(PasswordEncoderProperties properties,
List<PasswordEncoder> passwordEncoderList) {
public PasswordEncoderAutoConfiguration(PasswordEncoderProperties properties) {
this.properties = properties;
this.passwordEncoderList = passwordEncoderList;
}
/**
@@ -70,7 +68,7 @@ public class PasswordEncoderAutoConfiguration {
* @see PasswordEncoderFactories
*/
@Bean
public PasswordEncoder passwordEncoder() {
public PasswordEncoder passwordEncoder(List<PasswordEncoder> passwordEncoderList) {
String encodingId = "bcrypt";
if (StrUtil.isNotBlank(properties.getEncodingId())) {
encodingId = properties.getEncodingId();
@@ -98,6 +96,7 @@ public class PasswordEncoderAutoConfiguration {
.getSimpleName()
.toLowerCase(), passwordEncoder));
}
CheckUtils.throwIf(!encoders.keySet().contains(encodingId), "所填 [{}] 密码编码器不存在!", encodingId);
return new DelegatingPasswordEncoder(encodingId, encoders);
}