配置AuthenticationManager
时间: 2023-11-27 15:41:16 浏览: 94
spring_Security_3.1的配置和代码
AuthenticationManager是Spring Security的核心接口之一,它是一个认证管理器,用于处理身份验证请求。在配置AuthenticationManager时,需要指定一个或多个AuthenticationProvider,它们将负责实际的身份验证工作。以下是配置AuthenticationManager的步骤:
1.创建一个实现了UserDetailsService接口的类。
2.在Spring Security配置类中,使用AuthenticationManagerBuilder定义一个AuthenticationManager的实例。
3.在AuthenticationManagerBuilder中,使用userDetailsService()方法将步骤1中创建的UserDetailsService实例传递给AuthenticationManagerBuilder。
4.添加一个AuthenticationProvider实例,它将使用步骤1中创建的UserDetailsService实例进行身份验证。
5.在WebSecurityConfigurerAdapter中重写configure(AuthenticationManagerBuilder auth)方法,将AuthenticationManagerBuilder实例传递给该方法。
6.在configure(HttpSecurity http)方法中,使用authenticationManager()方法返回的AuthenticationManager实例,配置身份验证规则和访问控制规则。
以下是一个示例代码片段,演示了如何配置AuthenticationManager:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
auth.authenticationProvider(authenticationProvider());
}
private AuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(userDetailsService);
provider.setPasswordEncoder(passwordEncoder());
return provider;
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("USER", "ADMIN")
.antMatchers("/login/**").permitAll()
.and()
.formLogin()
.loginPage("/login")
.and()
.logout()
.logoutSuccessUrl("/login?logout")
.and()
.exceptionHandling()
.accessDeniedPage("/access-denied");
}
}
阅读全文