在Spring Security /表单登录中输入错误的凭证时发生无限循环

use*_*199 4 spring spring-mvc spring-security

据我所知,只有在我的上启用了以下bean时,它才进入无限循环。如果启用了此bean,则WebSecurityConfigurerAdapter扩展类。

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

启用此bean后,如果我输入错误的凭据,它将陷入无限循环。我有从AbstractUserDetailsAuthenticationProvider扩展的自定义身份验证提供程序。如果未找到用户,则根据合同,此类将引发UsernameNotFoundException。我可以看到连续不断有电话到达我的retrieveUser。

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

use*_*199 6

我不了解将事物的所有机制粘合在一起的方法,但是authenticationManagerBean是一个大提示。春季安全性以某种方式创建身份验证管理器链时,如果我使用authenticationManagerBean,则将父管理器设置为自我管理器。我的解决方案是在配置过程中将父身份验证管理器设置为null。一定是我的错误或缺乏理解

@Override
    protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
        auth.parentAuthenticationManager(null);
    }
Run Code Online (Sandbox Code Playgroud)