将req.user传递给graphQL

时间:2018-12-26 03:59:55

标签: node.js express graphql passport.js

我是GraphQL的新手,并且对Node有一定的经验。

我正在使用我的应用程序中的通行证登录用户,因此我的req将在包含用户信息的快递单中附加req.user

现在,由于我正在使用GraphQL,如何将req.user从我的主应用程序传递给GraphQL? (或者GraphQL本身将有权访问req,从而有权访问req.user?)

我有一个简单的GraphQL模式

app.use("/graphql", expressGraphQL({
    schema: schema,
    graphiql: true
  }));

对于初学者来说,我找不到任何使用护照对用户进行身份验证的教程,因此我考虑过使用静态的APi路由来使用护照对我的用户进行身份验证,然后传递req.user

2 个答案:

答案 0 :(得分:3)

您可以将用户资料放入defaults: - scope: type: mycollection values: layout: a_custom_layout anyvar: a_custom_var

context

并在解析器中获取上下文。 GraphQL.js模式中的每个解析器都接受四个位置参数:

app.use("/graphql", expressGraphQL({ schema: schema, graphiql: true, context: ({ req }) => ({ user: req.user }) }));

答案 1 :(得分:1)

在节点中使用"graphql": "^14.0.2",我可以像这样使用req作为解析器参数(在app.use部分中没有任何其他特殊配置):

 fieldName(args, req) {
    console.log(req.user);
 }