验证 Spring RestController 中的 HTTP-Header 字段
Validate a HTTP-Header field in a Spring RestController
我正在寻找一种方法来验证自定义 header 'X-Client-Id' 是否设置为发送到 [=27] 的 HTTP 请求中 Repository
中定义的值=] 在 SpringBoot 中。
我看到教程(如 this)在方法中包含 header,如下所示:@RequestHeader(value="User-Agent")
。我假设我必须将该行写入每个方法并注入一个公共 validator-bean 来验证该值。
另一个 Whosebug answer 似乎建议使用 HandlerInterceptor
。我不确定这是否适用于 header 值和 REST 端点。
那么验证 class/REST-controller 的所有方法是否设置了特定 header 的推荐方法是什么?
基本上最简单(也是最合乎逻辑)的方法是在请求到达您的控制器之前捕获它。这可以通过其他答案状态的 HandlerInterceptor
或像 OncePerRequestFilter
.
这样的简单 Filter
来实现
扩展 class,覆盖 doFilterInternal()
方法,因为 doFilter() 是最终方法,提取正确的 header 值,根据您的需要检查它,并根据值,抛出异常或继续链。
我正在寻找一种方法来验证自定义 header 'X-Client-Id' 是否设置为发送到 [=27] 的 HTTP 请求中 Repository
中定义的值=] 在 SpringBoot 中。
我看到教程(如 this)在方法中包含 header,如下所示:@RequestHeader(value="User-Agent")
。我假设我必须将该行写入每个方法并注入一个公共 validator-bean 来验证该值。
另一个 Whosebug answer 似乎建议使用 HandlerInterceptor
。我不确定这是否适用于 header 值和 REST 端点。
那么验证 class/REST-controller 的所有方法是否设置了特定 header 的推荐方法是什么?
基本上最简单(也是最合乎逻辑)的方法是在请求到达您的控制器之前捕获它。这可以通过其他答案状态的 HandlerInterceptor
或像 OncePerRequestFilter
.
Filter
来实现
扩展 class,覆盖 doFilterInternal()
方法,因为 doFilter() 是最终方法,提取正确的 header 值,根据您的需要检查它,并根据值,抛出异常或继续链。