【发布时间】:2017-11-29 20:15:48
【问题描述】:
我有一颗豆子
@Bean
public FilterRegistrationBean animalsFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new AnimalsFilter());
registration.addUrlPatterns(
"/api/cat",
"/api/cat/**",
"/api/dog"
);
...
return registration;
}
在那个 bean 中,我为 /api/cat** URL 使用了两种模式。问题是当我尝试使用复杂的后缀 (/api/cat/1/feed) 调用端点时,我的过滤器不会拦截请求。但是当我调用/api/cat 和/api/got 端点时没关系——过滤器按预期工作并拦截请求。
如何为我的案例使用多个 URL 模式(/api/cat、/api/cat/**)?
PS
我尝试使用下一个模式组合:
1) /api/cat, /api/cat**, /api/dog
2) /api/cat, /api/cat/**, /api/dog
3) /api/cat**, /api/dog
【问题讨论】:
-
@goat 你试过
/api/cat/* -
FilterRegistrationBean的 javadoc 将很快更新,以提及它接受的 url 模式语法是根据 servlet 规范,因此用户不要将该模式与 spring 使用的 ant-matcher 模式混淆安全。
标签: java spring spring-security servlet-filters