当 Class 级别权限表示只有所有者可以创建 class 时,创建解析对象失败
Create Parse objects fail when Class Level Permission says only owner can create the class
问题描述
假设我有一个带有 text 和 owner 属性 的 Parse "Diary class",其中 owner 是一个指针。
在仪表板上使用默认的 Class 级别权限(指针权限),我想任何人都可以创建新对象并声称它们由另一个随机用户拥有,如下所示:
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-d '{"text":"hacked","owner": {"__type": "Pointer","className": "_User","objectId": "ANYTHING_THE_HACKER_WANT"}}' \
http://server.com/parse/classes/Diary
于是尝试修改dashboard上的CLP,希望属于某个用户的日记只能由该用户创建。但是我无法让它工作。
重现步骤
1) 在 class 上配置 Class 级别权限,如下所示:
2) 尝试创建新对象,说它们归登录用户所有:
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-H "X-Parse-Session-Token: r:4613f36ba383022378780d4c2bcdf1cd" \
-d '{"text":"...","owner": {"__type": "Pointer","className": "_User","objectId": "CSosrTAkxL"}}' \
https://server.com/parse/classes/Diary
预期结果
日记对象应该创建成功,因为调用它的人是所有者。 IE。会话令牌与所有者的 objectId 匹配?
实际结果
它 returns 错误改为:
{"code":119,"error":"Permission denied for action create on class Diary."}
为什么?我期待正确的行为吗?
选中 Public 的创建框。 CLP 的指针权限仅影响数据库 中的特定对象。由于这些对象尚不在数据库中,因此用户无法通过 CLP 来保存此对象,而无需从云代码中覆盖主密钥。选中创建框将意味着任何用户都可以创建这些对象之一,但他们必须是所有者才能更新或删除该对象。
问题描述
假设我有一个带有 text 和 owner 属性 的 Parse "Diary class",其中 owner 是一个指针。
在仪表板上使用默认的 Class 级别权限(指针权限),我想任何人都可以创建新对象并声称它们由另一个随机用户拥有,如下所示:
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-d '{"text":"hacked","owner": {"__type": "Pointer","className": "_User","objectId": "ANYTHING_THE_HACKER_WANT"}}' \
http://server.com/parse/classes/Diary
于是尝试修改dashboard上的CLP,希望属于某个用户的日记只能由该用户创建。但是我无法让它工作。
重现步骤
1) 在 class 上配置 Class 级别权限,如下所示:
2) 尝试创建新对象,说它们归登录用户所有:
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-H "X-Parse-Session-Token: r:4613f36ba383022378780d4c2bcdf1cd" \
-d '{"text":"...","owner": {"__type": "Pointer","className": "_User","objectId": "CSosrTAkxL"}}' \
https://server.com/parse/classes/Diary
预期结果
日记对象应该创建成功,因为调用它的人是所有者。 IE。会话令牌与所有者的 objectId 匹配?
实际结果
它 returns 错误改为:
{"code":119,"error":"Permission denied for action create on class Diary."}
为什么?我期待正确的行为吗?
选中 Public 的创建框。 CLP 的指针权限仅影响数据库 中的特定对象。由于这些对象尚不在数据库中,因此用户无法通过 CLP 来保存此对象,而无需从云代码中覆盖主密钥。选中创建框将意味着任何用户都可以创建这些对象之一,但他们必须是所有者才能更新或删除该对象。