[英]Filter period of spring and spring security filters
我知道 servlet web requet 将通过:
request -> filter-1 -> filter-2 -> ... -> filter-n -> servlet
如果我使用弹簧,它是:
request -> filter-1 -> filter-2 -> filter-spring(DelegatingFilterProxy) -> ... -> filter-n -> servlet
如果我将过滤器定义为 bean,则该 bean 将包含在 filter-spring 中:
filter-spring(myFilter1 -> myFilter2...)
如果我使用 spring-security,则会创建一个名为 FilterChainProxy 的过滤器并将其包含在 DelegatingFilterProxy 中:
filter-spring(myFilter1 -> filter-security(FilterChainProxy) -> myFilter2...)
如果我定义了一个安全过滤器,它将被添加到 FilterChainProxy 中:
filter-spring(myFilter1 -> filter-security(mySecurityFilter1 -> mySecurityFilter2 ...) -> myFilter2...)
我的问题是:
filter-spring(DelegatingFilterProxy)
顺序是什么?filter-spring
中filter-security(FilterChainProxy)
顺序是什么?filter-spring
中myFilter1
和myFilter2
顺序是什么,以及如何定义这些顺序(在filter-security
之前和之后)?小程序过滤器
您可以使用@Order
注释、 Ordered
接口或FilterRegistrationBean
设置自定义 servlet 过滤器的Ordered
,请参阅Spring Boot 参考:
让 Filter beans 无序通常是安全的。 如果需要特定的顺序,您应该使用
@Order
注释Filter
或使其实现Ordered
。 您不能通过使用@Order
注释其 bean 方法来配置Filter
的顺序。 如果您无法更改Filter
类以添加@Order
或实现Ordered
,则必须为Filter
定义FilterRegistrationBean
并使用setOrder(int)
方法设置注册 bean 的顺序。
安全过滤链
您可以使用@Order
设置自定义安全过滤器链的顺序,请参阅Spring Security Reference :
(2) 创建一个包含
@Order
的WebSecurityConfigurerAdapter
实例来指定应该首先考虑哪个WebSecurityConfigurerAdapter
。
默认顺序记录在WebSecurityConfigurerAdapter
。
安全过滤器
您可以设置您的自定义安全滤波器的阶addFilterAfter
, addFilterBefore
,看到HttpSecurityBuilder#addFilterBefore
:
允许在已知
Filter
类之一之前添加Filter
Filter
。
默认顺序记录在Spring Security Reference 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.