在 express.js 上 "role based authentication middleware" 需要更好的方法
Need a better way for "role based authentication middleware" on express.js
我做了什么:
router.get('/apps', authController.authenticateUser, appController.getApps);
router.get('/roles', authController.authenticateAdmin, roleController.getRoles);
我想做的事情:
router.get('/apps', authController.authenticate('USER'), appController.getApps);
router.get('/roles', authController.authenticate('ADMIN'), roleController.getRoles);
当我以这种方式传递参数时出现此错误 ==>
错误:Route.post() 需要一个回调函数,但得到了一个 [object Undefined]
谢谢。
所有 express 中间件都应该 return 接受三个参数(请求、响应、下一个)的函数。在您的情况下,您的中间件被注册为一个对象。相反,return 来自 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);
我做了什么:
router.get('/apps', authController.authenticateUser, appController.getApps);
router.get('/roles', authController.authenticateAdmin, roleController.getRoles);
我想做的事情:
router.get('/apps', authController.authenticate('USER'), appController.getApps);
router.get('/roles', authController.authenticate('ADMIN'), roleController.getRoles);
当我以这种方式传递参数时出现此错误 ==> 错误:Route.post() 需要一个回调函数,但得到了一个 [object Undefined]
谢谢。
所有 express 中间件都应该 return 接受三个参数(请求、响应、下一个)的函数。在您的情况下,您的中间件被注册为一个对象。相反,return 来自 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);