首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringSecurity: FilterChainProxy: VirtualFilterChain --> originalChain由什么填充?

SpringSecurity: FilterChainProxy: VirtualFilterChain --> originalChain由什么填充?
EN

Stack Overflow用户
提问于 2021-07-01 00:10:14
回答 1查看 55关注 0票数 0

我正在写一个新的spring安全配置。我需要导入一些具有自己的配置/过滤器的其他公司库。每个带有@Component/@Bean注释的过滤器都出现在FilterChainProxy的"originalChain“属性中,并在请求时运行。我搜索了文档,找不出originalChain属性是什么,为什么它在那里,是什么决定了要去那里的过滤器,等等。我想停止运行未使用的过滤器。

一篇文章把它描述为“originalChain代表原生过滤器链,也就是网页过滤器”,我还不能理解这是什么意思。

什么是originalChain?

EN

回答 1

Stack Overflow用户

发布于 2021-07-01 03:26:08

每个Servlet应用程序都可以在到达实际的Filter之前执行多个Servlet实现。总体情况是这样的:

Spring提供了一个名为DelegatingFilterProxy的过滤器实现,它允许在Servlet容器的生命周期和Spring的ApplicationContext之间架起桥梁。Servlet容器允许使用自己的标准注册过滤器,但它不知道Spring定义的Beans。DelegatingFilterProxy可以通过标准的Servlet容器机制进行注册,但将所有工作委托给实现过滤器的Spring Bean。

考虑到这一点,我们可以说DelegatingFilterProxy是Spring MVC在注册过滤器时使用自己的标准的一种方法。

当您公开实现Filter的Spring Bean时,它将在DelegatingFilterProxy中注册。

FilterChainProxy是Spring Security提供的一种特殊的Filter,它允许通过SecurityFilterChain委托给许多Filter实例。因为FilterChainProxy是一个Bean,所以它通常被包装在DelegatingFilterProxy中。

您可以看到,上面这张假设的图片将FilterChainProxy作为过滤器链(虚线框)中的第二个过滤器。一旦FilterChainProxy完成了对其SecurityFilterChain过滤器的处理,它将调用originalChain (虚线框)来继续处理剩余的过滤器,在上面的场景中是Filter2。

Spring Security reference中也有一个很好的解释,我在这里引用了本文中的大部分资源。

如果你想阻止Spring注册一个Filter,你可以参考这个question on StackOverflow

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68198276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档