···
"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
},
···

- 发布:2021-03-19 15:00
- 更新:2021-03-19 15:21
- 阅读:843
产品分类: uniCloud/腾讯云
操作步骤:
预期结果:
read可以通过,update也应该可以通过
read可以通过,update也应该可以通过
实际结果:
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,全不行。
2 个回复
名图客 (作者)
报错为:get方法内参数值必须唯一位置。
如果不是唯一值,那么read也应该不能通过,中间没有任何步骤,点击查看修改。
名图客 (作者)
另外,在权限校验的过程,或运算 “||” 如果前面已经通过,不应该再去校验后面的啊,但是,schema里面似乎都要校验,不管是或与非,也就是检查get是否为唯一位置。
比如:"auth.uid == doc.uid || auth.uid in get(
database.studios.${doc.stid._id}
).write.orders"如果左边通过了,是不是直接应该忽略右边呢?何必再去校验右边?
DCloud_uniCloud_WYQ
doc.xxx是跟你的where有关的,你的where条件怎么写的
2021-03-19 17:20
名图客 (作者)
回复 DCloud_uniCloud_WYQ: 那应该就是where条件的原因了
2021-03-19 20:36