gpt4 book ai didi

node.js - 如何使用 Express-JWT 处理错误

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:33 24 4
gpt4 key购买 nike

我正在尝试合并 express-jwt 库,但我不太了解它的错误处理方式。

documentation说:

Error handling

The default behavior is to throw an error when the token is invalid, so you can >add your custom logic to manage unauthorized access as follows:

    app.use(function (err, req, res, next) {
if (err.name === 'UnauthorizedError') {
res.status(401).send('invalid token...');
}
});

但我对它的工作原理感到困惑。如果我有一个简单的 req res 情况,并且我想在 token 有效时调用 next,或者调用 next 如果不是错误,我应该把那个 app.use 函数放在哪里?

例如,这是我的代码:

router.post('/', expressJwt({  
secret: jwtSecret,
credentialsRequired: false
}), (req, res, next) => {
databaseController.findUser(req.user.email, (err, user) => {
if (err) {
return next(err)
}
res.json(user)
})
})

此处的 err 将来 self 的数据库调用,而不是来自 express-jwt 验证。感谢您的帮助。

最佳答案

另一种方法是,您可以将中间件与 app.use 放在一起,以扫描所有路由以在 header 或查询字符串中查找有效的 jwt。可以使用 unless 关键字豁免任何公共(public)端点。例如:

app.use(expressjwt({credentialsRequired: true, secret: config.TOKEN_SECRET, requestProperty: 'user'}).unless({path: config.PUBLIC_URLs}));

app.use(function(err, req, res, next) {
if(err.name === 'UnauthorizedError') {
res.status(err.status).send({message:err.message});
logger.error(err);
return;
}
next();
});

关于node.js - 如何使用 Express-JWT 处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970329/

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