配置核心为两个类HttpSecurity和WebSecurity
HttpSecurity的目标是构建DefaultSecurityFilterChain
![](https://img-blog.csdnimg.cn/img_convert/67b9e4cc85a92b0131fca808b5666b5c.png)
WebSecurity的目标是构建Filter
![](https://img-blog.csdnimg.cn/img_convert/dc10e46251174aec5307564eb2409785.png)
首先看HttpSecurity构建的DefaultSecurityFilterChain
DefaultSecurityFilterChain实现了接口SecurityFilterChain,SecurityFilterChain的作用是判断当前请求是否匹配,如果匹配则对请求应用一系列filter进行过滤
![](https://img-blog.csdnimg.cn/img_convert/5935532e93e8f42ad8ec84406722e2d4.png)
![](https://img-blog.csdnimg.cn/img_convert/4d6fa19186ee343401884cf92e835757.png)
再看WebSecurity构建的Filter
在WebSecurity中有个performBuild方法就是用来构建Filter的(具体原理先不必深究,重点看springSecurity的工作原理)
![](https://img-blog.csdnimg.cn/img_convert/26cc4a436fc5d98a309df48b4eb011fe.png)
可以看到最终构建的filter为FilterChainProxy
![](https://img-blog.csdnimg.cn/img_convert/89432a90c60a94ca7fc3a7837016d205.png)
查看FilterChainProxy,发现其内部持有一系列SecurityFilterChain的集合。
![](https://img-blog.csdnimg.cn/img_convert/1011461d964e31afc506a28f1cbb67dd.png)
可以看到FilterChainProxy的作用就是从这一些列的SecurityFilterChain集合中找到能够与request匹配的filter集合并包装成VirtualFilterChain,并交由VirtualFilterChain进行过滤
![](https://img-blog.csdnimg.cn/img_convert/73dc762a0998c918645c281f6ab84c99.png)
![](https://img-blog.csdnimg.cn/img_convert/7f96c961341db22196ebfc4753fbab2d.png)
查看VirtualFilterChain,发现他的作用是拿到刚才一些的filter,然后进行挨个过滤,最后再交给原来的过滤链(servlet容器的过滤链)进行过滤。
![](https://img-blog.csdnimg.cn/img_convert/ba955394bbe55a5012cce928ce26d8c9.png)
至此springSecurity的主体工作流程已经很明显了。
请求先到达FilterChainProxy,然后FilterChainProxy去查找SecurityFilterChain集合,得到匹配的SecurityFilterChain获取其内部的filter集合再交给VirtualFilterChain进行过滤。
具体如何过滤,下回再来分析。