我有一个应用程序,如下所示

现在,每当在网关接收到请求时,就会调用Zuul过滤器AuthorizationInterceptor,它通过调用User Service来执行身份验证/授权。如果授权成功,则调用实际的微服务。
现在有了新的需求,我需要编写一些聚合API,它从两个服务中获取数据并将数据组合在一起。所以我在网关代理上添加了@RestController,但在调用rest控制器之前,不会调用AuthorizationInterceptor。即使请求在本地提供服务,我如何告诉ZuulFilter被调用。
对此有什么解决方案吗?这是否应该以不同的方式进行架构?
发布于 2018-08-26 17:41:13
我不认为把这种逻辑放到网关服务中是个好主意。
您所指的是聚合器服务,它可以像其他两个服务一样位于网关之后,但它不存储数据或执行某些业务逻辑,而只是从其他两个服务中获取数据并将其聚合。这样,AuthorizationInterceptor也将在网关级别上被调用。
另一种老生常谈的方法是创建一个自定义的ZuulFilter,它处理一个虚构的端点调用并聚合数据。这样,您的AuthorizationInterceptor也将被调用,但将这种逻辑放入您的边缘服务中并不是一个好主意。
https://stackoverflow.com/questions/52024792
复制相似问题