对用户使用 parse-server 并进行身份验证并调用其他内部 REST Web 服务
Using parse-server for users and auth and call other internal REST web service
我们计划在内部托管 parse-server 来为我们正在构建的新移动应用程序提供内容服务。
此外,我们还有一些内部 REST 服务,除了我们在解析中构建的内容外,我还希望我们的移动客户端使用这些服务。
我想利用解析服务器用户、身份验证和 session 管理来调用这些内部 REST 服务。
我发现云代码功能非常有限,因为它们只接受 POST,我想要更多 RESTful api 供客户使用该地图 1 -1 到内部服务,这样我就可以传递请求了。
我在解析服务器旁边创建了一个快速中间件函数 运行,它只接受一个传入请求,更改基础 url,添加一个新的 header(与身份验证相关)和 routes/proxies该请求关闭到内部网络服务。
首先,是否可以让解析客户端 api 调用另一个快速端点?
其次,在服务器端验证此调用的最佳方式是什么。
我创建了一个简单的 node.js 测试文件,我在其中使用 javascript/node api 登录解析服务器,然后在 session-token 中设置用户 session-token =30=] 在休息客户端中调用这个新端点,但正在寻找反馈或更好的方法。
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');
}
});
...
所以。我刚刚创建了一个快速中间件函数来检查 x-parse-session-token header,然后调用 /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){
如果响应是 200 并且在响应的 body 中包含一个用户(使用 Parse.Object.fromJSON),那么 session 是有效的,所以我将请求转发到另一个内部添加一些内部身份验证后的服务 headers.
我们计划在内部托管 parse-server 来为我们正在构建的新移动应用程序提供内容服务。
此外,我们还有一些内部 REST 服务,除了我们在解析中构建的内容外,我还希望我们的移动客户端使用这些服务。 我想利用解析服务器用户、身份验证和 session 管理来调用这些内部 REST 服务。
我发现云代码功能非常有限,因为它们只接受 POST,我想要更多 RESTful api 供客户使用该地图 1 -1 到内部服务,这样我就可以传递请求了。 我在解析服务器旁边创建了一个快速中间件函数 运行,它只接受一个传入请求,更改基础 url,添加一个新的 header(与身份验证相关)和 routes/proxies该请求关闭到内部网络服务。
首先,是否可以让解析客户端 api 调用另一个快速端点? 其次,在服务器端验证此调用的最佳方式是什么。
我创建了一个简单的 node.js 测试文件,我在其中使用 javascript/node api 登录解析服务器,然后在 session-token 中设置用户 session-token =30=] 在休息客户端中调用这个新端点,但正在寻找反馈或更好的方法。
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');
}
});
...
所以。我刚刚创建了一个快速中间件函数来检查 x-parse-session-token header,然后调用 /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){
如果响应是 200 并且在响应的 body 中包含一个用户(使用 Parse.Object.fromJSON),那么 session 是有效的,所以我将请求转发到另一个内部添加一些内部身份验证后的服务 headers.