Node.js 如何在NodeJS路由中正确注入中间件

Node.js 如何在NodeJS路由中正确注入中间件,node.js,express,routes,middleware,Node.js,Express,Routes,Middleware,如何将中间件函数“checkAuthenticated”注入下面的get路由? 不确定如何正确注入下面的代码。请让我知道。多谢各位 function checkAuthenticated(req, res, next) { if(!req.header('authorization')) { return res.status(401).send({message: 'Unauthorized request. Missing authentication header'});

如何将中间件函数“checkAuthenticated”注入下面的get路由? 不确定如何正确注入下面的代码。请让我知道。多谢各位

function checkAuthenticated(req, res, next) {
  if(!req.header('authorization')) {
    return res.status(401).send({message: 'Unauthorized request.  Missing authentication header'});
  }

  let token = req.header('authorization').split(' ')[1];

  let payload = jwt.decode(token, '123');

  if(!payload) {
    return res.status(401).send({message: 'Unauthorized request.  Authetication header invalid'});
  }

  req.user = payload;

  next();
}

router.route('/:user_id')
  .get((req, res) => {
    User.findById(req.params.user_id, (err, user) => {
      if (err) {
        res.send(err);
      } else {
        res.json(user);
      }
    });
  })

这里有几个选项。我通常使用:

router.use('*', checkAuthenticated);
另一个选择是:

router.get('/:user_id', checkAuthenticated, (req, res) => { ... })
或者,使用您的
路由器.route…
示例:

router.route('/:user_id').get(checkAuthenticated, (req, res) => { ... })
您还可以将它们链接在一起:

router.route('/:user_id').get(checkAuthenticated).get((req, res) => { ... })

检查这个,希望它能帮助你

router.route('/:user_id')
.all((req, res, next) => {
  if (req.user) {
    next();
  } else {
    res.redirect('/');
  }
})
.get((req, res) => {
  res.json(req.user);
});

太棒了,谢谢,但是如果我想注入特定的路线和动词呢?例如。router.route('/:user_id').post().get()但不是put()等。我已更新以反映处理此问题的多种方法#3号可能就是你要找的。你的帅哥!如果我能投你一票,我会的,但我的支持率很低。非常感谢你,伙计!