使用Apollo和Federation的微服务架构和身份验证共享

时间:2019-11-28 11:30:12

标签: graphql microservices apollo

我有微服务架构,并且使用Apollo。 所有的微服务都用Node.JS编写。

帐户服务API是微服务之一,它具有两种通用方法:

  • 版本登录; (登录并返回登录的用户)
  • 变异寄存器; (注册新用户)
  • 查询个人资料; (返回活跃用户)

Accounts API是有状态的,并且会话基于passport

另外,我有graphql网关:

  const gateway = new ApolloGateway({
    serviceList: [
      { name: 'accounts', url: 'http://localhost:3001/graphql' },
      { name: 'products', url: 'http://localhost:3002/graphql' }
    ]
  });

  const apolloServer = new ApolloServer({
    gateway,
    subscriptions: false,
    playground:
    process.env.NODE_ENV === 'production'
      ? false
      : {
        settings: {
          'request.credentials': 'include',
        },
      }
  });

在网关方面,我有一个在React中执行mutation login的网站。但是我不知道身份验证后如何存储凭据。

所以我也有调用mutation login的表格,但是我需要以某种方式覆盖登录名才能将当前用户设置为上下文并将其传递给产品API。

您能否分享有关如何实现的想法(我如何使用网关在微服务之间共享数据)?

0 个答案:

没有答案