【发布时间】:2015-04-06 22:36:17
【问题描述】:
我正在构建一个跨系统管理应用程序,它将用作多个后端系统的管理工具。该应用建立在 Mean.js 之上。
我已经使用“express-http-proxy”设置了一个/proxy 路由,以将所有子路由发送到它们各自的后端系统端点。但是,我需要在我的管理应用程序中对每个请求进行身份验证,然后使用目标 backendSystem 凭据进行装饰,然后“express-http-proxy”才能继续。这是我的/proxy 路由示例...
app.use('/proxy', users.requiresLogin, expressHttpProxy(config.backendSystem.host, {
forwardPath: function (req) {
return '/1.0' + require('url').parse(req.url).path;
},
decorateRequest: function (req) {
req.headers['content-type'] = 'application/json';
req.headers['backend-system-id'] = config.backendSystem.id;
req.headers['backend-system-key'] = config.backendSystem.key;
return req;
}
}));
注意:
目前 backendSystem 凭据是根据运行我的管理应用程序的环境存储的。但是,将来 backendSystem 凭据将由用户指定,并且此 /proxy 路由将与当前显示的不同。
问题:
需要请求正文中的数据的代理路由不起作用。
例如POST /comments {"user": user_id, "text": "rabble rabble rabble"}
我发现了什么:
bodyParser.json() 和“express-https-proxy”不太好用。我已经通过从express.js 中删除bodyParser.json() 来确认这一点。
但是,这不是一个完整的解决方案,因为我几乎所有其他路线都需要bodyParser.json,例如/auth/signin.
有没有人有一个干净的方法可以让我的 /proxy 路由例外,这样bodyParser.json 就不会被调用?
【问题讨论】:
标签: node.js express proxy meanjs