在我的 ExpressJS 应用程序中,我的几个 url 处理程序具有以下逻辑:
- 查看用户是否有权访问资源
- 如果是,请继续
- 否则,重定向到主处理程序。
有没有办法通过 ConnectJS 或 ExpressJS 为某些 url 处理程序插入预处理程序?
我知道我可以在全局范围内为所有处理程序执行此操作(我这样做是为了插入由于 IE 损坏的 XDR 而丢失的 header )。
但是,我可以对处理程序的子集执行此操作吗?
最佳答案
我做了这样的事情:
lib/auth.js
exports.checkPerm = function(req, res, next){
//do some permission checks
if ( authorized ) {
next();
} else {
res.render('/401');
return;
}
};
app.js
var auth = require('./lib/auth');
...
app.get('/item/:itemid', auth.checkPerm, routes.item.get);
您可以像上面的行一样在最终路由处理程序之前堆叠中间件。它必须具有相同的函数签名并调用 next();
关于node.js - Connect JS/Express JS url 处理程序的通用预处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387167/