我正在通过Spring Boot Cloud学习微服务。我有 2 个服务
authenticate
和 product
,我通过 gateway
调用它们,我遇到以下问题:
产品服务如何知道哪个用户通过身份验证服务登录并检索该用户的登录信息?
在
product service
中,我有一个products table
,它有一个createdBy column
,它是存储在users table
中的authenticate service
处的用户。获取类似于Left Join的产品列表时,如何获取创建者信息?
如何在其他服务之间共享数据?
在我的项目中,每个服务都有一个单独的数据库,这是最优的吗?
我已经为此工作了几个小时,但仍然没有结果,这似乎很难做到。选择您正在使用的解决方案。谢谢你,编码愉快
通常,身份验证服务中的用户由在用户注册期间创建的唯一合成密钥(用户 ID)来标识。您可以将此键的值存储在产品服务的
createdBy
列中。必要的密钥应作为其 REST API 的参数传递给产品服务。
如果产品服务需要更多有关用户的信息而不仅仅是用户 ID,您应该在身份验证服务中预见一个专用的 REST API 端点,该端点通过用户 ID 返回必要的信息。
我相信你应该研究一下 Spring Security,它支持许多典型的身份验证工作流程。有关更多信息,例如,请参阅 Laurentiu Spilca 制作的有关该主题的系列视频,特别是有关 OAuth2 身份验证服务器的内容。