Flutter Firestore基于角色的安全规则

时间:2020-02-06 22:57:39

标签: flutter google-cloud-firestore firebase-security

我正在尝试确定用户集合中的指定字段role是否是应用程序中正在使用的字段。我已经在规则部分模拟了此规则,如下图所示:enter image description here

我正在尝试访问此图像中用户集合的Admin字段,并检查规则以允许创建新产品(如果用户是admin或superuser(可以创建admin用户))。下图:

enter image description here

规则模拟似乎失败了,是否有适当的方法来访问安全规则中的该字段(请参见两个图像)或正确地设置数据库?这些字段是使用单选按钮以表单设置的?

总体上需要完成的任务是仅允许我的用户以及在应用程序本身内部访问和/或操纵应用程序数据库的某些部分,是否可以查询这些字段并有条件地呈现UI和交互,避免整个安全规则?

超级用户位于所有者的集合中,为简洁起见,省略了该超级用户,并且其中只有一个文档。

谢谢。

1 个答案:

答案 0 :(得分:1)

您的规则是检查“项目”集合中的文档,但是您的屏幕截图显示了“用户”集合中的文档内容。因此,这里显然不匹配。

如果要允许使用另一个文档的内容访问文档,则需要get()另一个文档,然后在其中查找所需的数据。 documentation中提供了一个示例。您需要做的是get()当前已认证用户的用户文档,然后检查该文档的角色字段。看起来会像这样:

get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role