如何将我的中间件函数"checkAuthenticated"注入到下面的获取路由中?不知道如何正确注入下面的代码。 请让我知道。 谢谢。
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) => { ... })
或者,使用您的router.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);
});