验证身份验证 - 解析云

时间:2017-02-02 23:31:01

标签: javascript parse-platform cloud-code

我只希望经过身份验证的用户修改数据库中的类。 例如:

Parse.Cloud.beforeSave(("anything (I don't know how") => {
     // Something like this
    if (!verify(request.user)) {
        response.error("Not authenticated / Token is invalid");
        return
    }
    // ...
    response.success();
});

你有什么想法吗? 请注意,这是我第一次使用Parse。

1 个答案:

答案 0 :(得分:0)

您需要实现这样的verify()函数:

function verify(user) {
    var sessionToken = user.getSessionToken();

    if(!sessionToken)
        return Promise.resolve(false);
    else 
    {
        var query = new Parse.Query(Parse.Object.extend("_Session"));
        return query.first({useMasterKey:false, sessionToken:sessionToken })
            .then(function(validSessionToken){
                //User is signed in, and has a valid token (not expired yet)
                return true;
            })
            .fail(function(){        
                //User doesn't have a valid sessionToken
                return false;
            });

    }
}

想法是"验证" sessionToken通过向_Session类发出查询,查找与Request对象具有相同sessionToken的_Session对象,而不是使用MASTER_KEY。

如果sessionToken存在,将返回它,因为它具有使用MASTER_KEY访问的ACL和具有当前sessionToken的用户。

在查询中使用sessionToken而不是MASTER_KEY,除了那个之外,你将永远无法看到其他sessionTokens。