如何在我的 graphQL 上下文中反序列化用户

Posted

技术标签:

【中文标题】如何在我的 graphQL 上下文中反序列化用户【英文标题】:How do I deserialize the user in my graphQL context 【发布时间】:2017-09-29 12:22:14 【问题描述】:

我有一个express 服务器,我在其中使用express-graphql。我也在使用passportpassport-google-oauth20 进行身份验证。

我正在设置我的graphQl 没有上下文:

router.use(graphqlHTTP(
  schema,
  graphiql: true
));

这意味着request 作为context 传递到我的resolver

const rootResolvers = 
  Query: 
    hello: (obj, args, context) => 
      console.log(context.headers.cookie);
      return "hello"
    
  
;

我可以从请求中看到cookie。如何使用cookie 到达deserialize 用户? passport 通常为我执行此操作,但在这种情况下,我需要在 passport 生命周期之外调用 deserialize 函数。我该怎么做?

【问题讨论】:

【参考方案1】:

request 附加了一个user,它已经是deserialized。在resolver 中,只需访问user

const rootResolvers = 
  Query: 
    hello: (obj, args, context) => 
      console.log(context.user);
      return "hellllo"
    
  
;

现在你可以随心所欲地使用它了。

【讨论】:

以上是关于如何在我的 graphQL 上下文中反序列化用户的主要内容,如果未能解决你的问题,请参考以下文章