春季安全:迁移4.0到5.0 - 错误-there没有映射的PasswordEncoder的ID"空"

Kha*_*han 1 spring spring-security

java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
    org.springframework.security.crypto.password.DelegatingPasswordEncoder$UnmappedIdPasswordEncoder.matches(DelegatingPasswordEncoder.java:236)
    org.springframework.security.crypto.password.DelegatingPasswordEncoder.matches(DelegatingPasswordEncoder.java:196)
    org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter$LazyPasswordEncoder.matches(WebSecurityConfigurerAdapter.java:593)
Run Code Online (Sandbox Code Playgroud)

我的代码工作正常,现在我已将弹簧安全版本从4.0更改为5.0,它无法正常工作

Kha*_*han 8

对于基于Java的,在代码中进行这些更改并将其更新为

@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
    BCryptPasswordEncoder encoder = passwordEncoder();
    auth.inMemoryAuthentication().withUser("admin").password(encoder.encode("admin")).roles("ADMIN");
}

@Bean
public BCryptPasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}
Run Code Online (Sandbox Code Playgroud)

要么,

 @Bean
public static NoOpPasswordEncoder passwordEncoder() {
 return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
}
Run Code Online (Sandbox Code Playgroud)

对于XML配置,

<bean id ="passwordEncoder" class = "org.springframework.security.crypto.NoOpPasswordEncoder" factory-method = "getInstance" />
Run Code Online (Sandbox Code Playgroud)