--- name: architecture-local-passthrough description: 为何用本地通配Controller+HttpUtils手动透传,而非solon.cloud.gateway.routes路由透传 metadata: type: project --- 本项目业务接口透传采用「本地通配 Controller(`@Mapping("/**")`)+ HttpUtils 手动透传」,而非 `solon.cloud.gateway.routes` 路由透传。 **Why:** 调研发现 Solon Cloud Gateway 的路由匹配中,`Path=/**` 兜底路由会**覆盖本地 Controller**,导致 `/sys/watchUserLogin` 被透传到源服务器而非本地处理——这会使规避风控的核心需求失效。而用 CloudGatewayFilter 短路拦截 watchUserLogin 时,获取 reactive 请求体(password)的 API 复杂不确定。 **How to apply:** 保持 TokenController(`@Mapping("/sys/watchUserLogin")` 具体路径)与 GatewayController(`@Mapping("/**")` 通配)并存,依赖 Solon 本地路由器「具体路径优先于通配」的特性。若未来要换回流式透传,需先确认本地 Controller 能优先于路由匹配。相关坑点见 [[solon-pitfalls]]。