为什么我不能为用户设置ACL来读取:false + write:false?

Aar*_*ron 10 acl parse-platform

我正在尝试通过REST API创建一个新用户,并希望该对象只能被创建它的用户访问(读取+写入).如果我在没有设置ACL的情况下创建用户,只设置用户名/密码,它会自动获得"Public Read,xxxx",其中xxxx是objectId.

如果我在创建用户调用中包含ACL,它会静默忽略该字段并为其提供相同的公共读取访问权限.

{"username":"dummyUsersname","ACL":{"*":{"write":false,"read":false}},"password":"dummyPassword"}
Run Code Online (Sandbox Code Playgroud)

如果我在创建对象后尝试更新ACL,我会得到:

code: 123 error: Invalid acl {"*":{"read":false,"write":false}}
Run Code Online (Sandbox Code Playgroud)

然而,基于网络的数据浏览器将让我无需投诉即可撤销公共读取权限.知道发生了什么事吗?

ego*_*dan 4

尝试使用云代码功能:

Parse.Cloud.beforeSave(Parse.User, function(request, response) {
    var acl = new Parse.ACL();
    acl.setPublicReadAccess(false);
    acl.setPublicWriteAccess(false);

    request.object.setACL(acl);
    response.success();
});
Run Code Online (Sandbox Code Playgroud)

使用时请提出要求

curl -X POST \
  -H "X-Parse-Application-Id: <app_id>" \
  -H "X-Parse-REST-API-Key: <rest_api_key>" \
  -H "X-Parse-Revocable-Session: 1" \
  -H "Content-Type: application/json" \
  -d '{"username":"cooldude6","password":"p_n7!-e8","phone":"415-392-0202"}' \
  https://api.parse.com/1/users
Run Code Online (Sandbox Code Playgroud)

...返回:

{"ACL":{"adItsbPH0a":{"read":true,"write":true}},"createdAt":"2015-08-13T10:10:09.591Z","objectId":"adItsbPH0a","phone":"415-392-0202","sessionToken":"r:otH4qsd2zmBG4tTj4ePoGSFVE","username":"cooldude6"}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。