Express:如何使用JSON Web令牌保护多个路由

时间:2017-11-30 01:36:10

标签: javascript node.js express 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' });
  });
});

还有其他方法吗?我的一些路线正在接近回调 - 地狱级别的嵌套,所以从每条路线中消除这种情况会很好。

1 个答案:

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