最近想给自己的小系统搭建一个登录认证服务,最初是想着一套oauth2权鉴就可以,但是发现这个oauth2只是权鉴,具体的登录认证需要由 SpringSecurity来进行实现。
也就是说SpringSecurity 主要就是用来进行用户名、密码认证的登录框架
然后看了一下 SpringSecurity,发现之前用过,但是只是用过,具体的流程不清楚。
趁这个机会,将SpringSecurity源码大体的整理看一下。
概述#
SpringSecurity 的功能就是 认证、授权、防止伪造登录
其核心就是一组过滤链,通过各种的过滤器对请求进行过过滤,然后放行符合规则的请求。
具体流程可以看下图:
流程#
从上面我们可以清楚的认知到,我们的请求是由多个过滤器过滤之后才能访问到具体的api 的,那么各个过滤器是怎么进行的合作的呢?
这章只说登录认证
1. AbstractAuthenticationProcessingFilter 过滤器#
首先是 SpringSecurity一系列过滤器,然后走到AbstractAuthenticationProcessingFilter 这个过滤器