【发布时间】:2018-09-21 17:37:31
【问题描述】:
我有一个如下所示的用户节点:
name: "someone"
isAdmin: true
isDev: true
permissions:
shots: true
最后,我想授予任何管理员读写任何内容的权限。
但与此同时,我如何检查用户权限然后授予访问权限?
类似这样的:
match /{document=**} {
allow write: if request.user.permissions.shots == true;
}
更新:
我已经走得更远了。
allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.permissions.shots == true;
我觉得应该可以,因为下面的内容确实有效:
allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.name == 'someone';
更新:
随着我深入挖掘,下面的方法似乎是正确的方向,但仍然不起作用
allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.permissions2.child('shots').val() == true;
【问题讨论】:
-
您共享的规则适用于 Cloud Firestore,但您使用
firebase-realtime-database标记。虽然这两个数据库都是 Firebase 的一部分,但它们完全不同,一个的安全规则不适用于另一个。如果您确实在使用 Firebase 实时数据库,请在此处查看我的回答,了解如何编辑相应的安全规则:stackoverflow.com/a/52129163 -
@FrankvanPuffelen 我很抱歉。我删除了标签,我正在寻找有关 Cloud Firestore 的指导。谢谢
-
@FrankvanPuffelen 很好奇你能否就我的更新提供一些意见
标签: firebase nosql google-cloud-firestore firebase-security