我在中迈出了第一步。在研究过程中,我想更好地理解GlobalFilter的使用。具体而言,我打算每次为(每个路由)应用一些过滤器。
阅读文档(参考文献)有两种方法可以达到我的目标。第一个是GlobalFilter的使用,第二个是在default-filters中有一个GatewayFilter。
这两种解决方案都运行得很好,但是只适用于YAML配置中定义的路由。如果我有任何RouteLocator或RouterFunctions,我需要每次声明过滤器
.filters(f -> f.globalFilter("something"))实现目标的唯一方法是直接使用WebFilter (参考文献)。
所以我的问题是,如果有人能解释GatewayFilter/GlobalFilter和Webfilter这两个过滤器的区别
也许答案在Spring文档中,但我找不到。
提前谢谢你!
发布于 2021-04-07 11:14:23
如果您希望为每一条路由(为YAML中定义的路由以及网关本身中的控制器/端点)设置一个过滤器,那么WebFilter应该是最好的选择。
如果希望为所有路由设置一个筛选器,但不希望对网关中的端点进行筛选,则可以使用默认筛选器/全局筛选器。
最后,您有可以为特定路由配置的GatewayFilters。
我在源代码中注意到,路由通过FilteringWebHandler,网关中的端点直接映射到控制器方法,它们并不真正通过这些处理程序(不过它们通过普通的WebFilters )。因此,上述各点。
https://stackoverflow.com/questions/58429556
复制相似问题