请教一个问题,在 Spring Cloud Gateway 的 Filter 中无法使用 Feign 吗

2021-04-07 18:35:12 +08:00
 Canon1014

准备用 gateway 的过滤器做身份验证,但是 FeignClient 的 Service 总是注入失败(报错为 service 为 null )。

搜到了一些解决方法感觉都不好用,开始怀疑这么做是不是不太优雅。

在 github 上找到了维护人员的回复说 Feign can't be used in gateway filters 。

求教各位有什么办法可以解决吗,或者通过其他方式可以实现这个功能。

2461 次点击
所在节点    Java
9 条回复
iminto
2021-04-08 08:31:51 +08:00
Canon1014
2021-04-08 09:58:55 +08:00
@iminto #1 尝试过,还是有问题。我现在最纠结的问题是既然这么不方便是不是表示不提倡那么做,或者有更优的方式。
iminto
2021-04-08 11:23:30 +08:00
@Canon1014 gateway 作为网关层,本来就不该弄得太复杂了,引入各种依赖。

另外,gateway 是 spring webflux 架构,也有很多限制,传统的 servlet 那套很多东西也用不了的
iminto
2021-04-08 11:27:17 +08:00
身份验证,我目前是用的基于 cookie 或 jwt 的方案,逻辑也没多复杂,感觉用起来还行。我之前试过在 gateway 做访问日志,后来发现 response 是异步的,不好处理,弄起来又复杂,还非常影响性能,就放弃这种思路了。所以如果你要是觉得有啥不顺手,那应该是使用姿势不太对
jzmws
2021-04-08 11:48:46 +08:00
哈哈哈 被坑死了把 ! Filter 初始化时候,bean 还没被注入 !! 不要问我为什么我知道的!
jzmws
2021-04-08 11:49:35 +08:00
手动用带参初始化 Filter
Canon1014
2021-04-08 12:52:23 +08:00
@iminto #4 感谢,在看关于 spring webflux 的东西了,没想到有那么多讲究
Canon1014
2021-04-08 12:53:14 +08:00
@jzmws #5 感谢,尝试下吧
jinzhongyuan
2022-01-17 19:18:09 +08:00
哈哈,确实如此

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/768811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX