我有一个基于微服务的系统,有 25 个微服务。我想设计一个架构处理场景如下:
例如,我们有一个针对客户业务部分的微服务,它有一个 API、
/customerlist
信息。
当网络浏览器的客户端用户来调用 /customerlist
获取他的信息时。
当 Windows 应用程序的管理员用户来电时
/customerlist
获取客户报告(带有一些过滤器,例如创建日期)
实现此要求的最佳方法是什么?哪种分解模式最好?
您建议通过 HTTP 请求的来源(例如客户端应用程序或 Web 浏览器)来区分用户。这是有问题的,因为你不能真正安全地做到这一点:这个讨论和这个其他讨论详细讨论了这个问题,结论是IP数据包的内容可以由任何人组成。
创建单独的端点(您的选项号 2)是可能且易于实现的,但根据应用程序的安全级别,您仍然必须确保非管理员用户无法访问管理界面。
因此解决这个问题的最佳方法是用户身份验证机制。许多框架都支持这一点 - 这是进一步阅读的一个要点。
我搜索了很多。 我发现 Backend For Front End Pattern 它有一些缺点,例如重复,这对我来说非常重要。
我认为对我来说最好的方法是为每个微服务的每个用户类型或设备使用多个控制器