将 req.user 传递给 graphQL
Posted
技术标签:
【中文标题】将 req.user 传递给 graphQL【英文标题】:Passing req.user to graphQL 【发布时间】:2019-05-24 10:25:46 【问题描述】:我是 GraphQL 新手,对 Node.js 有一些经验。
我在我的应用程序中使用护照登录用户,因此我的req
将在包含用户信息的快递中附加req.user
。
现在,由于我使用的是 GraphQL,我如何将 req.user 从我的主应用程序传递给 GraphQL? (或者 GraphQL 本身可以访问 req 并因此访问 req.user?)
我有一个像这样的简单 GraphQL Schema
app.use("/graphql", expressGraphQL(
schema: schema,
graphiql: true
));
对于初学者,我找不到任何使用护照验证用户的教程,所以我考虑使用 restful APi 路由使用护照验证我的用户,然后传递 req.user
【问题讨论】:
【参考方案1】:您可以将用户资料放入context
app.use("/graphql", expressGraphQL(
schema: schema,
graphiql: true,
context: ( req ) => (
user: req.user
)
));
并在解析器中获取上下文。 GraphQL.js 架构中的每个解析器都接受四个位置参数:
fieldName(obj, args, context, info) result
【讨论】:
【参考方案2】:在节点中使用"graphql": "^14.0.2"
,我可以像这样使用req
作为解析器参数(app.use
部分中没有任何其他特殊配置):
fieldName(args, req)
console.log(req.user);
【讨论】:
以上是关于将 req.user 传递给 graphQL的主要内容,如果未能解决你的问题,请参考以下文章
Express EJS模板如何传递一个json对象来查看它是不是未定义
express-jwt 将用户对象设置为 req.user._doc 而不仅仅是 req.user?
在 React (ES6) 中访问 Passport 的 req.user? API 调用将 req.user 返回为未定义