如何应用基于URL模式的spring boot过滤器? [英] How to apply spring boot filter based on URL pattern?
问题描述
我创建了一个spring boot过滤器 - 使用 @Component
注释实现 GenericFilterBean
。
I have created a spring boot filter - implements GenericFilterBean
with @Component
annotation.
@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初始化程序 - 只是注释。
The filter is automatically identified by the Spring Boot Framework and works fine for all of the REST API. I want this filter to apply only on a certain URL path, such as /api/secure/*
but I can't find the right way.
I tried @WebFilter
but it didn't work.
I'm not using XML configuration or servlet initializer - just the annotations.
让它运行的正确方法是什么?
What would be the correct way to get it working?
推荐答案
您可以添加如下过滤器:
You can add a filter like this:
@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();
}
这篇关于如何应用基于URL模式的spring boot过滤器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!