名图客
名图客
  • 发布:2021-03-19 15:00
  • 更新:2021-03-19 15:21
  • 阅读:680

【报Bug】schema 权限控制表现不一致 - 已解决

分类:uniCloud

产品分类: uniCloud/腾讯云

操作步骤:

···
"permission": {
"read": " auth.uid in get(database.studios.${doc.stid._id}).write.orders",
"create": "'order_create' in auth.permission",
"update": "auth.uid in get(database.studios.${doc.stid._id}).write.orders",
"delete": false
},
···

预期结果:

read可以通过,update也应该可以通过

实际结果:

read可以,update却不行

bug描述:

···
"permission": {
"read": " auth.uid in get(database.studios.${doc.stid._id}).write.orders",
"create": "'order_create' in auth.permission",
"update": "auth.uid in get(database.studios.${doc.stid._id}).write.orders",
"delete": false
},
···
read和update两个完全一致的权限控制,read可以通过,update却不行,有点懵圈了,试了doc.stid, doc.stid[0]._id,全不行。

2021-03-19 15:00 负责人:无 分享
已邀请:
名图客

名图客 (作者)

报错为:get方法内参数值必须唯一位置。
如果不是唯一值,那么read也应该不能通过,中间没有任何步骤,点击查看修改。

名图客

名图客 (作者)

另外,在权限校验的过程,或运算 “||” 如果前面已经通过,不应该再去校验后面的啊,但是,schema里面似乎都要校验,不管是或与非,也就是检查get是否为唯一位置。
比如:"auth.uid == doc.uid || auth.uid in get(database.studios.${doc.stid._id}).write.orders"
如果左边通过了,是不是直接应该忽略右边呢?何必再去校验右边?

该问题目前已经被锁定, 无法添加新回复