node.js - Connect JS/Express JS url 处理程序的通用预处理程序?

标签 node.js express connect

在我的 ExpressJS 应用程序中,我的几个 url 处理程序具有以下逻辑:

  1. 查看用户是否有权访问资源
  2. 如果是,请继续
  3. 否则,重定向到主处理程序。

有没有办法通过 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/

相关文章:

node.js - 为什么 socket.io 使用不同的路径创建第二个 'sid' cookie?

node.js - 部署后如何解决heroku中找不到页面错误

javascript - 重定向相对路径 Express.js 出错

algorithm - 连接树中的节点

javascript - 需要从页面源中定位视频代码,以及如何使视频可播放

deployment - 使用 Monit 而不是基本的 Upstart 设置有什么好处?

javascript - Socket.IO 适配器在 MongoDB 断开连接时抛出无法捕获的超时错误

node.js - $inc 忽略 Mongoose

Perl - 连接到 PostgreSQL 数据库 - 找不到合适的套接字

android - android中的蓝牙服务器和客户端