如何避免 Spring 引导应用程序中的冗余流量?

How to avoid redundant traffic in Spring Boot application?

我有 Spring-Boot 2.x 应用程序,以及一些上传多部分文件的休息控制器端点,像这样

    @PostMapping("/somePath")
    public ResponseEntity someController(@RequestParam MultipartFile file) )

我们在安全过滤器链中也有 jwtFilter,它检查 jwt 令牌的有效性;
我们有一种情况 token 无效,但是 tomcat 消耗流量

我该如何检查?:
我使用 spring 引导执行器并发出请求:
获取 http://localhost:8080/actuator/metrics/tomcat.global.received

是否可以在过滤器检查令牌之前中止流量?
有没有办法避免冗余流量?

我尝试将 HttpServletRequest 和 InputStream 作为控制器参数,但结果是一样的。

这是不可能的,唯一的方法 - 出于安全原因使用另一个平衡器应用程序。如果您正在考虑微服务,这也是正确的。 此外,关注点分离是正确的。

如果您想更改安全逻辑,您应该只更改安全应用程序。

有关详细信息,请参阅 spring-cloud, zuul

考虑到文件上传的成本很高,而且没有更好的解决方案,我同时会:

  • 确定需要在上面添加的延长时间 令牌到期
  • 让客户端在昂贵的上传之前调用验证令牌并根据需要更新令牌
  • 拥有服务器,当令牌过期时允许延长过期令牌仍被视为有效的时间

另一种选择是让客户在昂贵的上传之前更新令牌。客户端可以查看上传的大小来决定是否续订。