spring - 在现有 Spring 过滤器中自定义 URL 模式
问题描述
我在 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 执行它怎么办?
请让我知道您对此的看法。
解决方案
我没有测试它,但也许你的汽车过滤器应该扩展 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() 取决于您的配置。
推荐阅读
- tla+ - TLA+ 序列未通过 Append 或 Tail 调用更新
- python - 您可以在循环中定义类属性吗?
- java - 编写返回数组后半部分的方法 secondHalf。不能使用快捷方式,只能用于循环
- javascript - 使用 Javascript 对象更新文档中的所有字段
- python - 将数据框的特定列的值组合在一行或一个单元中
- java - 是否可以在少于 O(n log n) 的时间内比较两棵二叉树?
- java - 如何在不允许正常调整大小的情况下保持最大化按钮?
- python - Django模型ID没有通过for循环改变
- aws-lambda - 由于配置错误,执行失败:Lambda 函数的权限无效
- ruby-on-rails - 如何使轨道重新加载仅产生部分?