为用户和auth使用parse-server并调用其他内部REST Web服务

时间:2016-05-05 16:45:28

标签: node.js express parse-server

我们计划在内部托管解析服务器,为我们正在构建的新移动应用提供内容服务。

我们还有一些内部REST服务,除了我们在解析中构建的内容之外,我还希望我们的移动客户端使用它们。 我想利用解析服务器用户,身份验证和会话管理来调用这些内部REST服务。

我发现云代码功能非常有限,因为它们只接受POST,我希望客户端使用更多RESTful api将1-1映射到内部服务,这样我就可以传递请求。 我创建了一个与解析服务器一起运行的快速中间件函数,该服务器只接收传入请求,更改基本URL,添加新标头(与auth相关)以及请求内部Web服务的路由/代理。

首先可以让解析客户端api调用另一个快速端点吗? 其次,在服务器端,验证此调用的最佳方式是什么。

我创建了一个简单的node.js测试文件,我用javascript / node api登录到解析服务器,然后在rest客户端的头文件中设置用户会话令牌来调用这个新端点但是在寻找反馈或更好的方法。

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');
    }
});
...

1 个答案:

答案 0 :(得分:2)

因此。我刚刚创建了一个快速中间件函数,它检查x-parse-session-token标头,然后调用/ parse / users / me。

reload()

如果响应为200并且在回复正文中包含用户(使用Parse.Object.fromJSON),则会话有效,因此我在添加一些内部auth标头后将请求转发到其他内部服务。