Architecture API网关或特定服务中的职责
我在服务之间划分责任时遇到问题 示例场景 假设我们减少了以下服务数量,通过RabbitMQ相互通信:Architecture API网关或特定服务中的职责,architecture,microservices,separation-of-concerns,Architecture,Microservices,Separation Of Concerns,我在服务之间划分责任时遇到问题 示例场景 假设我们减少了以下服务数量,通过RabbitMQ相互通信: API服务。所有业务逻辑的单个HTTP入口点 用户服务。它处理用户逻辑 要实现用户创建功能:我应该在API或用户服务中实施业务限制吗 例如,如果只有管理员可以创建“isAdmin”属性设置为true的用户,我会想到以下选项: 暂定解决办法 签入API服务 API服务检查用户是否已授权,如果已授权,则将操作发送给用户服务。操作到用户服务 优势:用户服务更加灵活。如果其他服务希望在将来创建用户,
- API服务。所有业务逻辑的单个HTTP入口点
- 用户服务。它处理用户逻辑
是否存在良好的实践?你以前有没有遇到过这种困境?它是如何工作的?从
领域驱动设计的角度来看,授权应该是一个单独的有界上下文。因此,授权检查应该在用户管理范围的上下文之外进行。因此,在最简单的实现中,您可以使用一些Api服务来执行实际的检查,从应用程序层调用。如果当前经过身份验证的用户具有所需的权限(例如CanCreateNewUsers
),则允许调用Users administration bounded context
,否则将被错误拒绝
更复杂的/DDD解决方案是在两个有界上下文之间使用反破坏层
顺便说一句,我建议您在进行实际检查时使用权限而不是角色。从域驱动设计
的角度来看,您可以在授权受限上下文中使用角色,授权应该是一个单独的受限上下文。因此,授权检查应该在用户管理范围的上下文之外进行。因此,在最简单的实现中,您可以使用一些Api服务来执行实际的检查,从应用程序层调用。如果当前经过身份验证的用户具有所需的权限(例如CanCreateNewUsers
),则允许调用Users administration bounded context
,否则将被错误拒绝
更复杂的/DDD解决方案是在两个有界上下文之间使用反破坏层
顺便说一句,我建议您在进行实际检查时使用权限而不是角色。您可以在授权受限上下文中使用角色