我有一个看起来像这样的应用程序
现在,每当网关收到请求时,就会调用Zuul过滤器AuthorizationInterceptor
,该过滤器通过使用User Service进行一些调用来进行身份验证/授权。如果授权成功,则将调用实际的微服务。
现在有了新的要求,我需要编写一些聚合的API,该API从两个服务中获取数据并合并数据。因此,我在网关代理服务器上添加了@RestController
,但在未调用其余控制器之前,AuthorizationInterceptor
并未被调用。即使本地处理了请求,我如何告诉ZuulFilter
被调用。
对此有什么解决方案吗?是否应该以其他方式设计架构?
答案 0 :(得分:0)
我认为将这种逻辑应用于网关服务不是一个好主意。
您所指的是一个聚合服务,它可以作为网关的另两个服务而位于网关之后,但是它不存储数据或执行某些业务逻辑,而只是从其他两个服务中获取数据并将它们聚合。这样,AuthorizationInterceptor
也将在网关级别被调用。
另一种骇人听闻的方法是创建一个自定义的ZuulFilter,它处理虚构的终结点调用并聚合数据。这样,您的AuthorizationInterceptor
也将被调用,但是将这种逻辑放入边缘服务中不是一个好主意。