转至码农小胖哥

1. 前言
欢迎阅读Spring Security 实战干货系列文章,在集成Spring Security安全框架的时候我们最先处理的可能就是根据我们项目的实际需要来定制注册登录了,尤其是Http登录认证。根据以前的相关文章介绍,Http登录认证由过滤器UsernamePasswordAuthenticationFilter 进行处理。我们只有把这个过滤器搞清楚才能做一些定制化。今天我们就简单分析它的源码和工作流程。
2. UsernamePasswordAuthenticationFilter 源码分析
UsernamePasswordAuthenticationFilter 继承于AbstractAuthenticationProcessingFilter(另文分析)。它的作用是拦截登录请求并获取账号和密码,然后把账号密码封装到认证凭据UsernamePasswordAuthenticationToken中,然后把凭据交给特定配置的AuthenticationManager去作认证。源码分析如下:

为了加强对流程的理解,我特意画了一张图来对这个流程进行清晰的说明:

3. 我们可以定制什么
根据上面的流程,我们理解了UsernamePasswordAuthenticationFilter工作流程后可以做这些事情:
-
定制我们的登录请求URI和请求方式。
-
登录请求参数的格式定制化,比如可以使用JSON格式提交甚至几种并存。
-
如何将用户名和密码封装入凭据
UsernamePasswordAuthenticationToken,定制业务场景需要的特殊凭据。
4. 我们会有什么疑问
AuthenticationManager从哪儿来,它又是什么,它是如何对凭据进行认证的,认证成功的后续细节是什么,认证失败的后续细节是什么。不要走开,持续关注我呦!
本文深入剖析SpringSecurity中UsernamePasswordAuthenticationFilter的工作原理,探讨其源码及定制化方法,包括登录请求URI、请求参数格式及认证凭据封装。

101

被折叠的 条评论
为什么被折叠?



