我的代码是:
// middleware1 module.exports = function(req, res, next) { req.user = 'current user'; next(); }; // middleware2 module.exports = function(req, res, next) { middleware1(req, res, next); if (req.user !== 'current user') return res.status(403).send('Access denied'); next(); }; // API router.get('/api', middleware2, async (req, res) => { return res.send(req.user); });
我做错了什么?如何正确地将一个中间件链接或嵌套到另一个中间件中?
(web应用程序有更多内容,但我只包含了重现错误所需的内容)
既然你路过 next
next
您可以将中间商连锁为:
router.get('/api', middleware1, middleware2, [...])
或者你希望你的中间人2表现得像:
//middleware2 module.exports = function(req, res, next) { middleware1(req, res, () => if (req.user !== 'current user') return res.status(403).send('Access denied'); next(); ); };