添加了app自定义短信验证码的登录方式后 @Autowired AuthenticationManager注入为NULL

来源:6-5 重构短信登录

乌_托_邦

2020-04-07

这是在OAuth2WebSecurityConfig extends WebSecurityConfigurerAdapter类中创建的AuthenticationManager的Bean
这是在AuthServerConfig的注入
首先我在未添加任何自定义登录方式的时候,使用password的方式登录一切正常,我加断点查看项目启动时是先走到了创建authenticationManagerBean的地方后才走到了AuthServerConfig中,这时候因为authenticationManagerBean已经创建了所以AuthServerConfig中通过@Autowired AuthenticationManager是能取到Bean的。

后来我在项目中增加了自定义的短信验证码登录的代码后,我发现项目启动时的顺序变了 ,通过断点调试
图片描述
先走到了这块调用的地方之后才再到了authenticationManagerBean创建的地方,这时因为authenticationManagerBean还未创建,所以在调用的地方取到的是null,这时候再使用Password的方式登录就会报错,如下图:
图片描述

这个问题困扰我两天了,请问老师以及同学问有没有遇到类似情况的 如何解决?

写回答

1回答

JoJo

2020-04-13

看一下WebSecurityConfigurerAdapter的authenticationManagerBean()方法的注释。应该在我们的配置类里覆盖此方法并按照注释中的说明将其明确声明成bean即可。


0
1
乌_托_邦
我的代码里已经将此方法覆盖并声明成bean了,老师你本地再加入第三方登录的代码以后再调用密码模式登录报不报错?
2020-04-13
共1条回复

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全

2662 学习 · 1561 问题

查看课程