使用以下架构时,使用两个代理

                    X-Forwarded-Prefix=/a  X-Forwarded-Prefix=/a
 /a/b/auth  +----------+  /b/auth  +----------+  /b/auth +----------+
   +------->|          |+--------->|          |+-------->|          |
            |  HTTPd   |           |   Zuul   |          | Auth     |
   <-------+|          |<---------+|          |<--------+| Service  |
            +----------+           +----------+          +----------+

当过滤器在身份验证流程中触发 HttpSessionRequestCache 时(当用户未通过身份验证时),即使在使用 X-Forwarded-Prefix 时也不考虑 server.use-forward-headers=true 保存请求(听起来很正常,因为 RemoteIpValve 不处理 X-Forwarded-Prefix )。

因此在那之后 SavedRequestAwareAuthenticationSuccessHandler 会将用户重定向到 /b/XXX 而不是 /a/b/XXX
这可能是一个可能的问题吗?或者只是我的用例太不常见,我必须自己处理标题 X-Forwarded-Prefix

最佳答案

自 Spring 4.3 以来已修复,它提供了名为 RemoteIpValve ForwardedHeaderFilter 的替代方案

10-08 20:25