gpt4 book ai didi

spring - 将 @Component 添加到自定义 Spring Security 过滤器的含义是什么

转载 作者:行者123 更新时间:2023-12-02 04:18:38 26 4
gpt4 key购买 nike

我有一个扩展 GenericFilterBean 的自定义 Spring Security 过滤器。

为了自动依赖和创建 Bean,我添加了 @Component 注释。

在我的安全配置中,我还注册了过滤器,例如:

@Autowired
private RestAuthenticationFilter restAuthenticationFilter;

protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.addFilterBefore(restAuthenticationFilter, LogoutFilter.class)

一切正常,除了我的过滤器被调用两次......看来 Spring 也会自动将过滤器添加到标准过滤器中。

这里最好的方法应该是什么?

更新

@Dave 这就是你的意思吗?看来有效。

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends WebMvcConfigurerAdapter {

@Autowired
private RestAuthenticationFilter restAuthenticationFilter;

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Bean
public ApplicationSecurity applicationSecurity() {
return new ApplicationSecurity();
}

@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setEnabled(false);
filterRegistrationBean.setFilter(restAuthenticationFilter);
return filterRegistrationBean;
}

@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
protected static class ApplicationSecurity extends WebSecurityConfigurerAdapter {

@Autowired
private RestAuthenticationFilter restAuthenticationFilter;

@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.addFilterBefore(restAuthenticationFilter, LogoutFilter.class)
.authorizeRequests()
.anyRequest().authenticated()
.and()
.csrf()
.disable()
.exceptionHandling()
.authenticationEntryPoint(new Http403ForbiddenEntryPoint())
.and()
.requestCache()
.requestCache(new NullRequestCache())
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
// @formatter:on
}
}
}

最佳答案

您需要使用 FilterRegistrationBean API 显式注册过滤器并将其标记为“enabled=false”。然后 Spring Security 将在其链中使用它,但 Boot 也不会尝试注册它。

关于spring - 将 @Component 添加到自定义 Spring Security 过滤器的含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24381191/

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