cow*_*eye 5 node.js express parse-server
我们计划在内部托管解析服务器,为我们正在构建的新移动应用程序提供内容服务。
此外,我们还有一些内部 REST 服务,除了我们在解析中构建的服务之外,我还希望我们的移动客户端使用这些服务。我想利用解析服务器用户、身份验证和会话管理来前置对这些内部 REST 服务的调用。
我发现云代码功能非常有限,因为它们只接受 POST,我希望客户端可以使用更 RESTful 的 api,将 1-1 映射到内部服务,这样我就可以传递请求。我创建了一个与解析服务器一起运行的快速中间件函数,它只接受传入请求,更改基本 URL,添加新标头(与身份验证相关)以及请求内部 Web 服务的路由/代理。
首先,是否可以获取解析客户端 api 来调用另一个 Express 端点?其次,在服务器端验证此调用的最佳方法是什么。
我创建了一个简单的 node.js 测试文件,在其中使用 javascript/node api 登录解析服务器,然后在休息客户端的标头中设置用户会话令牌以调用这个新端点,但寻找反馈或更好的方法。
var express = require('express');
var request = require('request');
var ParseServer = require('parse-server').ParseServer;
...
var api = new ParseServer({
...
});
app.use('/parse', api);
// Middleware function to auth request against parse and forward to other web service
app.use('/api/', function (req, res, next) {
var currentToken = req.headers['x-parse-session-token'];
//TODO, validate user token.. HOW BEST?
if (currentToken) {
// Query Parse for some user related data to add to request
// Modify request and forward to other web service
var newUrl = apiServerHost + req.baseUrl;
req.pipe(request(newUrl)).pipe(res);
} else {
res.send('Unknown parse user');
}
});
...
Run Code Online (Sandbox Code Playgroud)
所以。我刚刚创建了一个快速中间件函数,用于检查 x-parse-session-token 标头,然后调用 /parse/users/me。
app.use(function (req, res, next) {
unirest.get(env.getParseURL() + '/users/me')
.headers({
'X-Parse-Application-Id': env.getApplicationId() ,
'X-Parse-REST-API-Key': env.getRestApiKey(),
'X-Parse-Session-Token': req.header("x-parse-session-token") })
.send({})
.end(function(userData){
Run Code Online (Sandbox Code Playgroud)
如果响应为 200 并且在回复正文中包含用户(使用 Parse.Object.fromJSON),则会话有效,因此我在添加一些内部身份验证标头后将请求转发到其他内部服务。
归档时间: |
|
查看次数: |
1918 次 |
最近记录: |