【问题标题】:Is it possible to inject a service into apollo-client's middleware?是否可以将服务注入 apollo-client 的中间件?
【发布时间】:2017-10-25 07:21:58
【问题描述】:

是否可以将服务注入到 apollo-client 的中间件中?有阿波罗模块。 https://www.npmjs.com/package/apollo-angular 在文档中有一个如何实现身份验证的建议。通信是使用 localStorage 完成的。 http://dev.apollodata.com/angular2/auth.html 这不是 Angular2 方式。我需要确认。我一直在寻求解决方案。

【问题讨论】:

  • 我不认为它建议与 localStorage 通信,我认为它只是使用它来存储令牌。您可以随意与您的服务共享身份验证信息。

标签: angular apollo-client


【解决方案1】:

我会使用以下两个选项之一:

选项 1:

  1. 拥有管理登录/令牌等的身份验证服务。
  2. 将 Auth 服务注入到您构建 Apollo 的服务中。
  3. 在添加令牌的中间件中,从注入的 Auth 服务中检索令牌。

选项 2:

让构建 Apollo 客户端的服务也管理 Auth 状态。将其注入您登录的页面以处理身份验证并在之后存储令牌。

【讨论】:

    【解决方案2】:

    我知道它很老了,但以防万一,注入被制成deps:

        providers: [
            {
              provide: APOLLO_NAMED_OPTIONS,
              deps: [HttpLink, AuthService],
              useFactory: createApollo,
            },
          ],
    

    然后你只需在 createApollo(httpLink: HttpLink, authService: AuthService) 工厂函数中添加一个参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 2021-04-29
      • 2021-01-15
      • 2017-10-06
      • 1970-01-01
      • 2022-01-24
      相关资源
      最近更新 更多