gpt4 book ai didi

spring - 防止 Spring Boot 注册 servlet 过滤器

转载 作者:IT老高 更新时间:2023-10-28 13:45:58 24 4
gpt4 key购买 nike

我有一个 Spring Boot WebMVC 应用程序和一个继承自 AbstractPreAuthenticatedProcessingFilter 的 bean,我明确地将其添加到 Spring Security 过滤器链中的特定位置。我的 Spring Security 配置如下所示:

<http pattern="/rest/**">
<intercept-url pattern="/**" access="ROLE_USER"/>
<http-basic/>
<custom-filter after="BASIC_AUTH_FILTER" ref="preAuthenticationFilter"/>
</http>

<beans:bean id="preAuthenticationFilter" class="a.b.PreAuthenticationFilter">
<beans:property name="authenticationManager" ref="customAuthenticationManager"/>
</beans:bean>

安全配置有效。问题是,因为 PreAuthenticationFilter 类继承自 AbstractPreAuthenticatedProcessingFilter,所以 Spring Boot 将其视为通用 servlet 过滤器,并将其添加到所有请求的 servlet 过滤器链中。我不希望此过滤器成为所有请求的过滤器链的一部分。我只希望它成为我配置的特定 Spring Security 过滤器链的一部分。有没有办法防止 Spring Boot 自动将 preAuthenticationFilter bean 添加到过滤器链中?

最佳答案

默认情况下,Spring Boot 为应用程序上下文中的每个 FilterRegistrationBean 创建一个 FilterRegistrationBean,而 FilterRegistrationBean 尚不存在。这允许您通过为 Filter 声明您自己的 FilterRegistrationBean 来控制注册过程,包括禁用注册。对于您的 PreAuthenticationFilter,所需的配置如下所示:

@Bean
public FilterRegistrationBean registration(PreAuthenticationFilter filter) {
FilterRegistrationBean registration = new FilterRegistrationBean(filter);
registration.setEnabled(false);
return registration;
}

您可能还对 this Spring Boot issue 感兴趣其中讨论了如何禁用 FilterServlet bean 的自动注册。

关于spring - 防止 Spring Boot 注册 servlet 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com