如何使用Express-JWT处理错误

我正在尝试使用express-jwt库,我不太明白它是如何处理错误的。

该文件说:

error handling

默认行为是在令牌无效时抛出错误,所以您可以>添加自定义逻辑来pipe理未经授权的访问,如下所示:

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

但我很困惑这是如何工作的。 如果我有一个简单的req res情况下,如果令牌是有效的,我想要调用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将来自我的数据库调用,而不是来自express-jwtvalidation。 任何帮助表示赞赏。

另一种方法是将app.use放置在中间件的头部或查询string中,以扫描所有路由以查找有效的jwt。 任何公共端点都可以使用except关键字来豁免。 例如:

 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(); });