gpt4 book ai didi

javascript - 如何为 graphql 编写中间件,该中间件将在每个解析器之前调用

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:26 25 4
gpt4 key购买 nike

在每个请求中我发送 token ,并在快速中间件中检查它

app.use(async (req, res, next) => {
const authorization = req.headers.authorization;
let token = null;
let user;

if (authorization) {
try {
token = jwt.verify(authorization, config.secret);
} catch (e) {
// dont work
throw new GraphQLError({ message: 'token damaged' });
}

if (token) {
const { _id } = token;

user = await User.findOne({ _id });
}

if (user) {
req.user = user;
}
}

next();
});

token 可能已损坏,我进行了检查:

try {
token = jwt.verify(authorization, config.secret);
} catch (e) {
throw new GraphQLError({ message: 'token damaged' });
}

所以我需要向客户端应用程序发送 Express Error,但它不起作用,如预期的那样,是否有任何选项可以创建在调用每个解析器之前获取请求参数的 graphql 中间件?现在,如果我想抛出损坏 token 的错误,我需要在每个解析器中进行写入检查?

最佳答案

你可以简单地响应并返回,而不需要调用下一个中间件:

try {
token = jwt.verify(authorization, config.secret);
} catch (e) {
res.statusCode = 401;
return res.end('{"errors": [{"message": "token damaged"}]}');
}

关于javascript - 如何为 graphql 编写中间件,该中间件将在每个解析器之前调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46224070/

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