我真的只是在寻找一种方法来清理我的代码。我有几条这样的路线,请注意每条路线都单独通过JSON网络令牌验证过程。
router.route('/some-route').post((req, res) => {
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return console.log(err);
// do something
res.json({ some: 'response data' });
});
});
router.route('/some-other-route').post((req, res) => {
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return console.log(err);
// do something else
res.json({ some: 'response data' });
});
});
还有其他方法吗?我的一些路线正在接近回调 - 地狱级别的嵌套,所以从每条路线中消除这种情况会很好。
答案 0 :(得分:2)
非常确定你可以告诉路由器将use
函数作为中间件。将为router
中的每个路径调用该函数。
router.use((req, res, next) => {
if(!req.body.token)
return res.json({ message: 'Missing token.' });
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return res.json({ message: 'Failed to authenticate token.' });
// do something else
req.decoded = decoded
next();
});
});