这是我的安全配置代码:
@EnableWebSecurity
@EnableGlobalMethodSecurity (
prePostEnabled=true
)
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
auth.inMemoryAuthentication()
.withUser("chandra").password("{noop}1234").roles("USER").and()
.withUser("admin").password("{noop}admin123").roles("ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/addItem","/delete").hasRole("ADMIN")
.antMatchers("/getAllItems").hasRole("USER")
.and().csrf().disable().headers().frameOptions().disable()
.and()
.formLogin();
}
}
但是在编译spring时,它仍然为我生成密码。
Using generated security password: 49f04bde-ac1f-4e30-870b-ba0dd93d50f3
我检查了打印语句是否正在加载配置,发现安全配置正在加载。我应该进行任何更改以使其与给定的用户名和密码一起使用。
谢谢。
答案 0 :(得分:0)
您可以想像,这是有关纯文本密码的默认提示,接下来会发生什么。 :-)
无论出于何种测试目的,您都可以在@Configuration
类中定义一个无操作密码编码器:
要使您noop
开头的工作正常,请确保公开以下bean:
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
有关更多信息,请咨询相应的chapter in the reference manual。 或者,您可以提供良好的旧密码管理器本身:
import org.springframework.security.crypto.password.PasswordEncoder;
[…]
@Bean
public NoOpPasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}