node.js - 如何在 NodeJS 路由中正确注入中间件
问题描述
如何将我的中间件函数“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) => { ... })
推荐阅读
- javascript - 努力将响应文件保存为 pdf 并将其直接附加到项目履行中
- javascript - 从伪装成外部脚本的字符串中注入 Javascript 代码
- python - 在 Atom 中运行 python 脚本
- c# - Unity2D 对撞机的问题
- c++ - 如何在 for 循环中包含两个索引值测试条件?
- reactjs - 如何将 Gatsby-Image 作为属性发送到组件
- php - 在 Woocommerce 中的产品自定义循环上启用 Ajax 添加到购物车按钮
- r - 在反应上下文中使用反应表达式中的(逻辑)向量/尝试应用非函数错误
- c++ - 是否可以在信号处理程序中设置承诺?
- java - Android - 无法使用 NotificationCompat.Builder 新构造函数(上下文、字符串)