问题描述
我所做的:
router.get('/apps',authController.authenticateUser,appController.getApps);
router.get('/roles',authController.authenticateAdmin,roleController.getRoles);
我想做什么:
router.get('/apps',authController.authenticate('USER'),authController.authenticate('ADMIN'),roleController.getRoles);
当我像这样传递参数时,出现此错误==> 错误:Route.post()需要回调函数,但得到了一个[object Undefined]
谢谢。
解决方法
所有快速中间件都应返回一个接受三个参数(请求,响应,下一个)的函数。在您的情况下,您的中间件已注册为对象。而是从authenticate()
方法返回匿名函数(关闭),并将其作为快速中间件进行抵制。
AuthController:
module.exports.authenticate = function (role) {
return function(req,res,next) {
//add your authentication logic here based on the role
}
}
路由器
router.get('/apps',authController.authenticate('USER'),appController.getApps);