如何在我的 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 上下文中反序列化用户的主要内容,如果未能解决你的问题,请参考以下文章

如何从实体框架中存在数据模型的json中反序列化对象?

如何解决错误:无效的 JSON 输入:无法从 START_ARRAY 令牌中反序列化 Topic 实例

JSON 解析错误:无法从 START_OBJECT 令牌中反序列化 `byte[]` 的实例

在自定义JsonConverter中反序列化嵌套对象List

如何在 .NET 中反序列化为本地集合?

如何在 C# 中反序列化具有前缀的 XML