一.简介
在前面的文章中,我们使用表单方式完成登录提交,但是目前基本都是前后端分离项目,很少使用表单提交的方式,基本都是json方式,使用ajax提交,那么我们怎么将表单提交方式改成json格式登录呢?
二.思路分析
通过前面源码部分学习中,已经知道在HttpSecurity配置中,每新增一种配置,都会加入一个过滤器,或者覆盖默认的过滤器,那么使用的表单登录也是同样使用过滤器,追踪源码看下他的过滤器:UsernamePasswordAuthenticationFilter
2.1原始表单过滤器提交认证请求的逻辑
- 使用Obtain获取用户名和密码,其实就是通过request.getParameter获取
- 然后将用户名和密码封装在token
- 调用proverManager.authenticate()进行认证 所以基于这块我们可以参考上节课验证码的思路:
2.2实现思路
- 写一个过滤器,继承UsernamePasswordAuthenticationFilter
- 从json格式参数中获取用户名和密码
- 然后进行封装成token
- 调用this.getAuthenticationManager().authenticate(authRequest) 完成认证
- 如果不是json格式请求则还是走原先的逻辑&