赞
踩
项目里要用到手机验证登录和账号密码提交登录两种方式,便自定义了手机验证登录的Provider,测试的时候发现一直403。
---------------------------------------------------------------------------------------------------------------------------------
随后开启debug模式!
找到问题了,手机验证的Provider没有被注册到里面来,回到SecurityConfig里查找问题。
因为以前也没有配置过多种验证方式,就一直这么配置了。这里面会判断是否AuthenticationManager是否已经存在,没有的话会去 Ioc容器里读取并且读取全局配置等,这里面authBuilder.build()里会默认提供一个DaoAuthenrizationProvider,但是没有读取到我们自己定义的Provirder。
问题在于当我们使用configuration.getAuthenticationManager()去获取一个Manager容器时,我们自己的Provider并没有加载到Ioc容器中,也没有被获取到。
解决方法:
自定义个AuthenrizationManager注射到IOC容器中即可。
注: 上面在过滤器链中使用,http.authenticationProvider()的方式,在论坛中也有很多人使用这种方式,但是我不知道为啥我是失效的,待我研究debug会。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。