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批注,使其正常工作。但是我需要在其他地方访问身份验证管理器。
我不了解将事物的所有机制粘合在一起的方法,但是authenticationManagerBean是一个大提示。春季安全性以某种方式创建身份验证管理器链时,如果我使用authenticationManagerBean,则将父管理器设置为自我管理器。我的解决方案是在配置过程中将父身份验证管理器设置为null。一定是我的错误或缺乏理解
@Override
protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
auth.parentAuthenticationManager(null);
}
Run Code Online (Sandbox Code Playgroud)