如何根据 URL 模式应用 Spring Boot 过滤器? [英] How to apply spring boot filter based on URL pattern?

查看:28
本文介绍了如何根据 URL 模式应用 Spring Boot 过滤器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个 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 框架自动识别,适用于所有 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆