1、认证大致流程
(1)过滤器父类:AbstractAuthenticationProcessingFilter
- 首先判断是否为POST提交
- 然后将POST提交上来的用户信息通过子类的attemptAuthentication方法进行认证,认证成功后,将信息存放在Authentication中。
- 然后设置session策略
- 如果认证失败,就抛出认证失败异常
- 如果认证成功
2、认证细节
attemptAuthentication方法:
第一步先判断是否为post提交
第二步判断用户名和密码是否为空
第三步将账号密码封装到一个未认证对象
UsernamePasswordAuthenticationToken中,将请求中的信息设置到对象中,然后使用authenticate方法进行身份认证,(调用自己编写的UserDetailSerivce)
3、UsernamePasswordAuthenticationToken未认证对象的构建过程
未认证对象
认证对象
他们之间差异为setAuthenticated方法中设置的布尔值
4、authenticate方法进行身份认证细节(存在于ProviderManager)
对信息进行认证,认证成功把信息复制到对象中