当用户注册时,应用程序会使用相同的信息将用户保存在 Firestore 中uid为 Firebase 身份验证生成。现在我正在尝试为单独的集合(而不是用户集合)编写安全规则,其中read and write仅当请求者具有以下权限时才允许该请求者进行操作isAdmin字段设置为 true。正如您在图像中看到的,即使路径中的路径正确get()函数,我得到了一个不存在的错误。什么可能导致此错误?
我尝试了路径的许多变体,更改集合,小写所有内容等。我在谷歌中找不到任何关于此的信息,官方文档显示的用法与我使用它的方式相同。
- 安全规则 https://i.stack.imgur.com/fNZKq.png
- 数据库 https://i.stack.imgur.com/Iwxxx.png
安全规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /user/{user} {
allow read,write: if true
}
match /akarmi/{akarmiId} {
allow read, write:
if get(/databases/$(database)/documents/user/$(request.auth.uid)).data.isAdmin == true
}
}
}
我希望这段代码能够运行并允许或禁止访问,并且不会抛出不存在的错误。
I solved my problem with the following configuration:
你必须设置一个真实的Firebase UID才能使用模拟器,实际的UID解决了问题,错误消息非常具有误导性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)