我正在学习Spring Security,我想在JdbcUserDetailsManager中添加BCryptPasswordEncoder。
这就是代码:
@Configuration
@EnableWebSecurity
public class DemoSecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
@Autowired
public UserDetailsManager userDetailsManager(DataSource securityDataSource) {
JdbcUserDetailsManager jdbcUserDetailsManager = new JdbcUserDetailsManager();
jdbcUserDetailsManager.setDataSource(securityDataSource);
return jdbcUserDetailsManager;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").hasRole("EMPLOYEE")
.antMatchers("/leaders/**").hasRole("MANAGER")
.antMatchers("/systems/**").hasRole("ADMIN")
.and()
.formLogin()
.loginPage("/showMyLoginPage")
.loginProcessingUrl("/authenticateTheUser")
.permitAll()
.and()
.logout().permitAll()
.and()
.exceptionHandling().accessDeniedPage("/access-denied");
}
}
字符串
我需要UserDetailsManager bean注入到其他类中。谢谢!
2条答案
按热度按时间g0czyy6m1#
密码编码器属于
DaoAuthenticationProvider
,**不属于UserDetailsService
。**当您使用JdbcUserDetailsManager
设置新用户的密码时,您给予给JdbcUserDetailsManager
的密码应该是 * 已加密的 *。于是:
PasswordEncoderFactories.createDelegatingPasswordEncoder()
);UserDetailService
你通常不需要配置
DaoAuthenticationProvider
,但是如果你想配置,下面的代码就可以了:字符串
umuewwlo2#
您应该使用此类创建UserDetails Bean
字符串
}
创建该类后,您将在
型
和
型