Skip to main content
 首页 » 编程设计

spring之在 spring 安全/表单登录中输入错误凭据时的无限循环

2025年01月19日21shanyou

据我所知,只有在我的 .如果启用此 bean,则为 WebSecurityConfigurerAdapter 扩展类。

@Override 
@Bean(name = "MyAuthManager") 
public AuthenticationManager authenticationManagerBean() throws Exception { 
    return super.authenticationManagerBean(); 
} 

启用此 bean 后,如果我输入错误凭据,它将进入无限循环。我有从 AbstractUserDetailsAuthenticationProvider 扩展的自定义身份验证提供程序。如果未找到用户,则根据契约(Contract),此类将引发 UsernameNotFoundException。我可以看到不断调用我的retrieveUser。

删除@Bean 注释,使其正常工作。但是我需要在其他地方访问身份验证管理器。

请您参考如下方法:

我不明白将事物粘在一起的所有机制,但 authenticationManagerBean 是重要的线索。不知何故,当 spring security 创建身份验证管理器链时,如果我使用 authenticationManagerBean,父管理器被设置为自我管理器。我的解决方案是在配置期间将父身份验证管理器设置为 null。一定是我的错误或我在某处缺乏理解

@Override 
    protected void configure(final AuthenticationManagerBuilder auth) throws Exception { 
        auth.parentAuthenticationManager(null); 
    }