我正在使用UserDetails实现进行身份验证,其中包含方法
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
如果我将isAccountNonLocked()设置为false,则无法登录。 我如何实现自己的UserDetailsChecker来覆盖检查时抛出的异常以及将自定义UserDetailsChecker放在哪里,因为我不确定这种预身份验证检查的工作方式。
答案 0 :(得分:0)
如果您有自定义的UserDetailsChecker
,则可以在配置AuthenticationManager
时将其连接起来:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(dao());
}
AuthenticationProvider dao() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setPreAuthenticationChecks(new MyUserDetailsChecker());
return provider;
}
@Bean
public UserDetailsService userDetailsService() {
// ... expose a UserDetailsService
}
}
请注意,您可能已经以另一种方式发布了UserDetailsService
,但我在此处包含了此信息,以提醒身份验证提供程序才能使用它。