是否可以将服务注入 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 的中间件?的主要内容,如果未能解决你的问题,请参考以下文章