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.
开头的简单模式
我正在尝试为 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.