Spring 使用路径变量筛选 URL 模式

Spring Filter For URL Pattern with Path Variable

我正在尝试为 Spring 中的中心 url 使用过滤器。 当我这样使用它时:

registrationBean.addUrlPatterns("/api/user/*");

它适用于所有以“/api/user”开头的url

但是当我这样使用它时:

registrationBean.addUrlPatterns("/api/user/*/activate");

它不适用于“/api/user/607a7244-3db9-429a-89f0-1662da0b0e15/activate”

我在文档上查过了 here, 他们说: * matches zero or more characters

有人知道为什么“/api/user/*/activate”与“/api/user/607a7244-3db9-429a-89f0-1662da0b0e15/activate”不匹配吗?

您正在尝试使用 FilterRegistrationBean 注册过滤器。由于这是一个正在注册的 Filter,因此 URL 映射依赖于 servlet 容器的支持 而不是 Spring(引导)中的支持。

URL servlet 容器的映射由 addUrlPatterns 方法的 the servlet specification (See section 12.2). Which is also mentioned in the javadoc 中指定的内容决定。

servlet 规范中的 URL 映射非常基础,仅匹配 URL 的第一部分。所以这就是为什么你的第一个 /api/user/* 有效(因为 URL 以 /api/user 开头而不是 /api/user/*/activate 因为它不以 /api/user/*/activate 开头。它是't ant-style 表达式只是 URL.

开头的简单模式