【问题标题】:Customizing URL pattern in existing Spring filter在现有 Spring 过滤器中自定义 URL 模式
【发布时间】:2019-05-05 12:12:59
【问题描述】:

我在 Spring-boot 应用程序中使用第三方库,其中包括以下所有 API URL 的过滤器。

@Bean
public FilterRegistrationBean registerCarFilter(@Value("${car.filter.order:400}") int order) {
    final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    registrationBean.setFilter(new CarFilter());
    registrationBean.addUrlPatterns("/*");
    registrationBean.setOrder(order);
    return registrationBean;
}

是否可以针对特定 URL 排除此过滤器?以及这样做的最佳做法是什么。

如果我不想为“/car-status” URL 执行它怎么办?

请让我知道您对此的看法。

【问题讨论】:

    标签: spring spring-mvc spring-boot spring-filter


    【解决方案1】:

    我没有测试它,但也许你的汽车过滤器应该扩展 OncePerRequestFilter。这是一个示例

    https://github.com/spring-projects/spring-boot/issues/7426

    在你的情况下 shouldNotFilter 可能看起来像:

    @Override
    protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
        return "/car-status".equals(request.getServletPath());
    }
    

    或者 request.getRequestURI() 取决于你的配置。

    【讨论】:

    • 但是 registerCarFilter 方法和 Car Filter 是库的一部分,我无法控制更改它。这就是问题所在。如何在我自己的代码中覆盖 FilterRegistrationBean 设置。
    • 它允许你扩展它吗?
    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2023-03-18
    • 2011-08-23
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多