gpt4 book ai didi

node.js - 如何将请求 header 传递给 graphql 解析器

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:22 24 4
gpt4 key购买 nike

我有一个由 JWT 授权的 graphql 端点。我的 JWT 策略验证 JWT,然后将用户对象添加到请求对象。

在一个安静的 route ,我会像这样访问用户的数据:

router.get('/', (req, res, next) => {
console.log('user', req.user)
}

我想访问 graphql 解析器中的 req.user 对象以提取用户的 ID。但是,当我尝试记录 context 变量时,它始终为空。

我是否需要配置 graphql 端点以将 req 数据传递到解析器?

我的 app.js 的 graphql 设置如下:

import { graphqlExpress, graphiqlExpress } from 'apollo-server-express';

app.use('/graphql', [passport.authenticate('jwt', { session: false }), bodyParser.json()], graphqlExpress({ schema }));

然后我的解析器如下所示:

const resolvers = {
Query: {
user: async (obj, {email}, context) => {
console.log('obj', obj) // undefined
console.log('email', email) // currently passed through in graphql query but I want to replace this with the user data passed in req / context
console.log('context', context) // {}
return await UserService.findOne(email)
},
};

// Put together a schema
const schema = makeExecutableSchema({
typeDefs,
resolvers,
});

如何访问解析器中的 JWT 用户数据?

最佳答案

显然您需要像这样手动传递上下文:

app.use('/graphql', [auth_middleware, bodyParser.json()], (req, res) => graphqlExpress({ schema, context: req.user })(req, res) );

找到答案here如果有人感兴趣:

关于node.js - 如何将请求 header 传递给 graphql 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49776031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com