全面解析Spring Security 过滤器链的机制和特性

时间:2021-05-19

1. 前言

过滤器作为Spring Security的重中之重,我们需要了解其中的机制。这样我们才能根据业务需求的变化进行定制。今天来探讨一下Spring Security中的过滤器链机制。

2. Spring Security 过滤器链

客户端(APP 和后台管理客户端)向应用程序发送请求,然后应用根据请求的 URI的路径来确定该请求的过滤器链(Filter)以及最终的具体Servlet控制器(Controller)。

从上图我们可以看出Spring Security以一个单Filter(FilterChainProxy) 存在于整个过滤器链中,而这个 FilterChainProxy 实际内部代理着众多的 Spring Security Filter。这简直就是套娃啊!

2.1 过滤器链的形成过程

再多说一点Filter们的初始化过程,首先Filter 们按照一定的顺序被 SecurityBuilder 的实现来组装为 SecurityFilterChain ,然后通过 WebSecurity 注入到 FilterChainProxy 中去,接着 FilterChainProxy 又在 WebSecurityConfiguration 中以 springSecurityFilterChain 的名称注册为 Spring Bean 。实际上还有一个隐藏层 DelegatingFilterProxy 代理了 springSecurityFilterChain 注入到最后整个 Servlet过滤器链中。简单画了个图;

事实上Spring Security的内置Filter对于Spring IoC容器来说都是不可见的。

Spring Security 允许有多 条过滤器链并行,Spring Security 的 FilterChainProxy 可以代理多条过滤器链并根据不同的 URI匹配策略进行分发。但是每个请求每次只能被分发到一条过滤器链。如下图所示:

关于Filter 的其它细节可以通过 相关文章[1] 了解。

实际每条过滤链 就是一个 SecurityFilterChain

4. 总结

今天我们通过对Spring Security 中 过滤器链机制,对于深入学习 Spring Security有着至关重要的意义。有什么问题和心得请留言反馈。

参考资料

相关文章: https:///spring-security-filters.html

到此这篇关于Spring Security 过滤器链的机制和特性的文章就介绍到这了,更多相关Spring Security 过滤器链内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章