【发布时间】:2012-07-01 14:45:23
【问题描述】:
我正在学习 express.js / node.js 并且对 javascript 原型模型有很好但不是很好的理解。因此,对于中间件在 express.js 的路由机制中的堆叠方式,我有点困惑。
假设我们有这个code
function andRestrictTo(role) {
return function(req, res, next) {
req.authenticatedUser.role == role
? next() : next(new Error('Unauthorized'));
}
}
app.del('/user/:id', loadUser, andRestrictTo('admin'), function(req, res){
res.send('Deleted user ' + req.user.name);
});
由于 andRestrictTo(role) 返回一个中间件,它在路由链中执行 - 我明白了。然而:
返回函数中req、res、next参数从何而来?我猜“链”以某种方式对其进行排队并分配参数,但这对于更深入的理解来说有点太模糊了......
作为 next 参数引发的错误发生了什么?错误是否会破坏中间件链?
如果我想将限制机制打包到单独的文件/模块中(如安全框架),该怎么做?
如果有人能指出基本想法,那就太酷了:)
【问题讨论】:
标签: node.js scope express connect middleware