Spring Boot筛选器URL映射

时间:2018-07-09 13:03:27

标签: spring-mvc spring-boot

我的控制器的请求映射如下:

/hospital/{hospitalId}/department/{departmentId}/doctors

我尝试添加用于身份验证所需过滤器的模式:

/hospital/*/department/*/doctors

但是它不起作用。是否有机会进行这项工作?

1 个答案:

答案 0 :(得分:0)

过滤器的映射不是您在Spring中惯用的Ant样式的映射,而是Servlet specification中定义的映射。在第12.2节中说:

  

以下语法用于定义映射:

     
      
  • 路径映射使用以'/'字符开头并以'/ *'后缀结尾的字符串。
  •   
  • 以“ *”开头的字符串用作扩展名映射。
  •   
  • 空字符串(“”)是一种特殊的URL模式,它精确地映射到   应用程序的上下文根,即http://host:port/ /形式的请求。在这种情况下,路径信息为“ /”,而servlet路径和上下文路径为空字符串(“”)。
  •   
  • 仅包含“ /”字符的字符串表示应用程序的“默认” servlet。在这种情况下,servlet路径是请求URI减去上下文路径,并且路径信息为null。
  •   
  • 所有其他字符串仅用于完全匹配。
  •   

/hospital/*/department/*/doctors仅符合最终项目符号的条件,因此将其视为完全匹配。

在Servlet规范范围内,您可以做的最好的事情是使用/hospital/*,然后在过滤器的代码中进行一些辅助匹配。您可以使用Spring Framework的org.springframework.util.AntPathMatcher来实现。