是否可以将服务注入 apollo-client 的中间件?

Posted

技术标签:

【中文标题】是否可以将服务注入 apollo-client 的中间件?【英文标题】:Is it possible to inject a service into apollo-client's middleware? 【发布时间】: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 通信,我认为它只是使用它来存储令牌。您可以随意与您的服务共享身份验证信息。 【参考方案1】:

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

选项 1:

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

选项 2:

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于是否可以将服务注入 apollo-client 的中间件?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 apollo-client 跳过部分查询

是否可以将服务注入 Angular 1.5 组件的 templateUrl 属性?

是否可以将服务从父组件注入到组件中?

使用 Apollo-Client 重新获取查询会引发错误

Laravel:是否可以将Session作为依赖项注入?

你如何动态控制 react apollo-client 查询启动?