小编典典

如何基于URL模式应用Spring Boot过滤器?

spring-boot

我创建了一个Spring Boot过滤器- GenericFilterBean@Component注释的实现。

@Component 
public class MyAuthenticationFilter  extends GenericFilterBean {
...
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
...
}
}

该过滤器由Spring Boot Framework自动识别,并且对所有REST
API都适用。我希望此过滤器仅应用于特定的URL路径,例如,/api/secure/*但找不到正确的方法。我试过了,@WebFilter但是没有用。我没有使用XML配置或servlet初始化程序-
只是注释。

使它正常工作的正确方法是什么?


阅读 361

收藏
2020-05-30

共1个答案

小编典典

您可以添加如下过滤器:

@Bean
public FilterRegistrationBean someFilterRegistration() {

    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(someFilter());
    registration.addUrlPatterns("/url/*");
    registration.addInitParameter("paramName", "paramValue");
    registration.setName("someFilter");
    registration.setOrder(1);
    return registration;
}

@Bean(name = "someFilter")
public Filter someFilter() {
    return new SomeFilter();
}
2020-05-30