我正在尝试使用parse.com作为我的用户管理器构建一个简单的应用程序。
我想从我的客户端登录parse.com,并使用用户的会话令牌调用我的node.js服务器(我将其添加为cookie)。在服务器端,我将验证会话(使用https://parse.com/docs/rest#users-validating)并仅在会话有效时允许访问。
例如(在我的服务器中):
app.get('/api', function(req, res, next) {
var token = getTokenFromRequest(req);
if(tokenIsValid(token)) {
next();
} else { // Redirect... }
});
app.get('/api/doSomething', function(req, res) {
// Do something....
});
但是,似乎REST API用户验证会返回用户,即使用户已注销(预计会返回“无效会话”)。 这是REST API用户验证中的错误吗?我究竟做错了什么?有没有更好的方法呢?
谢谢!
答案 0 :(得分:0)
通过REST,确实没有会话的概念。 REST调用意味着无状态意味着/me
处的(当前)用户将从提供的令牌序列化。如果令牌与用户相关联,则它将返回该用户的JSON表示,否则返回错误。
这种或那种方式的调用是异步的,因此您无法在if语句中使用它。
你可以这样做:
app.get('/api', function(req, res, next) {
var token = getTokenFromRequest(req);
serializeUserFromToken(token,function(err,parseResponse) {
if(err) return next(err)
if(parseResponse.code && parseResponse.code === 101){
// called to parse succedded but the token is not valid
return next(parseResponse);
}
// parseResponse is the current User.
next();
});
});
serializeUserFromToken
使用X-Parse-Session-Token
标头字段中的令牌向解析发出请求的位置。