解析服务器忽略ACL

时间:2020-07-16 13:17:38

标签: parse-platform acl parse-server

我为NewsFeed对象提供了一个简单的Parse Cloud Code函数。对于这些NewsFeed对象,我设置了一个ACL,以便fromUser可以对其进行写入,而toUser可以对其进行读写。我尝试使用以下功能为每个用户获取这些对象:

Parse.Cloud.define("get_feed", async (request) => {
  let user = request.user;

  var query = new Parse.Query("NewsFeed");
  query.equalTo("toUser", user);
  query.include("fromUser");
  query.descending("createdAt");

  let result;
  try {
      result = await query.find();
  } catch (error) {
      throw error.message;
  }
  return result;
});

我希望我得到满足查询条件并具有以下ACL的所有对象:

"ACL" : {
    "xXl3OIndCP": {
        "read": true,
        "write": true
    },
    "VPuRMZGhcv": {
        "write": true
    }
}

但是不幸的是,只有当我向ACL添加公共读取访问权限,使其看起来像这样时,它才起作用

"ACL" : {
    "*": {
        "read": true
    },
    "xXl3OIndCP": {
        "read": true,
        "write": true
    },
    "VPuRMZGhcv": {
        "write": true
    }
}

我不认为这是预期的行为,还是我错了?有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:0)

好吧,事实证明一个人必须在find()函数中传递会话令牌,因此我不得不使用result = await query.find({sessionToken : user.getSessionToken()});而不是result = await query.find();