解析服务器上的SetACL

时间:2016-05-08 20:45:36

标签: parse-platform parse-server

我在AWS上使用Parse Server并且一直很顺利。但是我无法像在parse.com云代码中那样分配ACL。

我已阅读The Compatibility NotesDocsGit Read me,但很少提及ACL。

以下answer已经尝试过,但它对我不起作用。

我的旧代码是这样的:

Parse.Cloud.afterSave("Favourites", function(request) {
    var user = request.user;
    var newACL = new Parse.ACL(Parse.User.current())
    newACL.setReadAccess(user, true);
    newACL.setWriteAccess(user, true);
    request.object.setACL(newACL);
    request.object.save();
});

显然Parse.User.current()不能用来引导我这个:

Parse.Cloud.beforeSave("Favourites", function(request, res) {

    var acl = new Parse.ACL();
    acl.setReadAccess(request.object.id, true);
    acl.setWriteAccess(request.object.id, true);
    request.object.setACL(acl);
    res.success();

});

然而,这对我不起作用。

我还尝试在使用以下内容的同时设置ACL,但它仍然不适用于我。

var favourites = new Favourites();

var acl = new Parse.ACL();
acl.setReadAccess('request.object.id', true);
acl.setWriteAccess('request.object.id', true);
favourites.setACL(acl);

favourites.save({
    user: request.user,
    favourites: request.params.favourites
}, {
    success: function(favourites) {
        console.log('Great!')
    },
    error: function(favourites, error) {
        console.log('The save failed');
    }
});

修改

我刚尝试使用Javascript文档:

  var favourites = new Favourites();

    var acl = new Parse.ACL(request.user);
    acl.setReadAccess(request.user, true);
    acl.setWriteAccess(request.user, true);
    acl.setPublicWriteAccess(false);
    acl.setPublicReadAccess(false);
    favourites.setACL(acl);
    favourites.set("favourites", request.params.favourites);
    favourites.set("userId", request.user.id);
    favourites.set("user", request.user);
    favourites.save({}, { useMasterKey: true });

仍然无效!

似乎Docs中严重缺乏node.js云代码示例。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这就是你需要做的。我向公众添加拒绝访问权限,因为它并不完全清楚你想要的是什么。

Parse.Cloud.afterSave("Favourites", function(request) {

    var newACL = new Parse.ACL();

    // Are you sure you don't need to disable public access?
    newACL.setPublicReadAccess(false);
    newACL.setPublicWriteAccess(false);

    // Give access to user
    newACL.setReadAccess(request.user, true);
    newACL.setWriteAccess(request.user, true);

    // Assign ACL to object
    request.object.setACL(newACL);

    // Use master key
    request.object.save(null, {useMasterKey: true});
});