【问题标题】:Parse.com setting ACL on cloud functionParse.com 在云功能上设置 ACL
【发布时间】:2015-04-08 20:53:04
【问题描述】:

我可以使用下面的代码设置setPublicReadAccess,但是我只想将ACL 锁定给用户。

Parse.Cloud.beforeSave("Programme", function(request, response) {
  Parse.Cloud.useMasterKey();

  var publicReadACL = new Parse.ACL();
  publicReadACL.setPublicReadAccess(true);

  request.object.setACL(publicReadACL);
  response.success();
});

我也试过了

Parse.Cloud.afterSave("Programme", function(request) {
  var user = Parse.User.current();
  if(typeof request.object.getACL() === "undefined") {
    var newACL = new Parse.ACL();
    newACL.setReadAccess(user.id,true);
    newACL.setWriteAccess(user.id,true);

    request.object.setACL(newACL);
    request.object.save();
  }
}); 

这也不起作用。

【问题讨论】:

  • 你试过new Parse.ACL(Parse.User.current()) 吗?它是否会进入您的if 声明(记录)?
  • 好的,我通过将请求对象作为字符串发送 user.id 来完成这项工作。但是我相信每个请求都带有一个 request.user ,它是用户 ID?
  • 确实如此。实际上,我认为与您在一个项目中运行的代码完全相同,并且运行良好
  • 我添加了console.log('user is:' + request.user);,我得到了I2015-04-09T16:00:30.984Z] user is:null

标签: javascript parse-platform acl


【解决方案1】:

您的 ParseObject 的 ACL 可能已经初始化,因此您应该使用request.object.existed() == false 而不是 typeof request.object.getACL() === "undefined"

此外,如果您不希望您的对象公开,则必须 newACL.setPublicReadAccess(false);newACL.setPublicWriteAccess(false);

对我有用

    Parse.Cloud.afterSave("YourObject", function(request) {
      var user = Parse.User.current();

      // check if the object was just created
      if(request.object.existed() == false){
        var newACL = new Parse.ACL();
        newACL.setPublicReadAccess(false);
        newACL.setPublicWriteAccess(false);
        newACL.setReadAccess(user.id,true);
        newACL.setWriteAccess(user.id,true);

        request.object.setACL(newACL);
        request.object.save();
      }
    });

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多