【发布时间】:2022-12-01 18:10:16
【问题描述】:
我对 spring security 用户名和密码使用覆盖值。以下属性在我的
application.properties
spring.security.user.name=myUser
spring.security.user.password=myPassword
spring.security.user.roles=admin
我想按如下方式加密密码值:
spring.security.user.name=myUser
spring.security.user.password={bcrypt}hashedpassword valuevalue
spring.security.user.roles=admin
我在我的 SpringConfig 中添加了 PasswordEncoder:
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder();
}
在某些示例中,我注意到有 AuthenitcationManagerBuilder 但我不知道应该使用什么数据源。我还需要为默认用户使用加密密码吗?
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth)
throws Exception {
添加我的 spring 安全配置作为参考:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.authorizeRequests().antMatchers("/api/v1/custom").hasRole("admin")
.anyRequest()
.authenticated()
.and()
.httpBasic();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder();
}
【问题讨论】:
-
1. 问题是什么? (没有任何密码编码器)2. 拥有
@Bean PasswordEncoder应该足以“拿起它”(你不需要这个过时的配置)
标签: java spring spring-security