Express:如何使用 JSON 网络令牌保护多条路线

Express: How to protect multiple routes with JSON web token

我真的只是在寻找一种方法来清理我的代码。我有几条这样的路线,请注意每条路线都单独经过 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' });
  });
});

还有别的办法吗?我的一些路由正在接近回调地狱级别的嵌套,所以最好从每条路由中消除它。

很确定您可以告诉路由器 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();
  });
});