UserDetailsChecker 实现覆盖 isAccountNotLocked 方法

2024-04-02

我正在使用 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 放在哪里,因为我不确定此预身份验证检查如何工作。


如果你有定制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以另一种方式,但我将其包含在此处以提醒身份验证提供程序需要一个身份验证提供程序才能工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UserDetailsChecker 实现覆盖 isAccountNotLocked 方法 的相关文章

随机推荐