mirror of
https://github.com/continew-org/continew-starter.git
synced 2025-09-10 08:57:19 +08:00
fix(core): 完善编码器配置校验
* 解决List<PasswordEncoder> 循环依赖问题 * 对用户选择的编码器做校验
This commit is contained in:
@@ -30,6 +30,7 @@ import org.springframework.security.crypto.factory.PasswordEncoderFactories;
|
|||||||
import org.springframework.security.crypto.password.*;
|
import org.springframework.security.crypto.password.*;
|
||||||
import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
|
import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
|
||||||
import top.charles7c.continew.starter.core.constant.PropertiesConstants;
|
import top.charles7c.continew.starter.core.constant.PropertiesConstants;
|
||||||
|
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -55,12 +56,9 @@ import java.util.Map;
|
|||||||
public class PasswordEncoderAutoConfiguration {
|
public class PasswordEncoderAutoConfiguration {
|
||||||
|
|
||||||
private final PasswordEncoderProperties properties;
|
private final PasswordEncoderProperties properties;
|
||||||
private final List<PasswordEncoder> passwordEncoderList;
|
|
||||||
|
|
||||||
public PasswordEncoderAutoConfiguration(PasswordEncoderProperties properties,
|
public PasswordEncoderAutoConfiguration(PasswordEncoderProperties properties) {
|
||||||
List<PasswordEncoder> passwordEncoderList) {
|
|
||||||
this.properties = properties;
|
this.properties = properties;
|
||||||
this.passwordEncoderList = passwordEncoderList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,7 +68,7 @@ public class PasswordEncoderAutoConfiguration {
|
|||||||
* @see PasswordEncoderFactories
|
* @see PasswordEncoderFactories
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
public PasswordEncoder passwordEncoder() {
|
public PasswordEncoder passwordEncoder(List<PasswordEncoder> passwordEncoderList) {
|
||||||
String encodingId = "bcrypt";
|
String encodingId = "bcrypt";
|
||||||
if (StrUtil.isNotBlank(properties.getEncodingId())) {
|
if (StrUtil.isNotBlank(properties.getEncodingId())) {
|
||||||
encodingId = properties.getEncodingId();
|
encodingId = properties.getEncodingId();
|
||||||
@@ -98,6 +96,7 @@ public class PasswordEncoderAutoConfiguration {
|
|||||||
.getSimpleName()
|
.getSimpleName()
|
||||||
.toLowerCase(), passwordEncoder));
|
.toLowerCase(), passwordEncoder));
|
||||||
}
|
}
|
||||||
|
CheckUtils.throwIf(!encoders.keySet().contains(encodingId), "所填 [{}] 密码编码器不存在!", encodingId);
|
||||||
return new DelegatingPasswordEncoder(encodingId, encoders);
|
return new DelegatingPasswordEncoder(encodingId, encoders);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user