Raj*_*shi 1 firebase firebase-security google-cloud-firestore
Firestore 安全规则不熟悉,正在尝试了解它。我正在尝试编写一项安全规则,仅允许admins在我的集合中写入数据,而每个人都可以读取数据。
具有文档 ID 作为管理员名称的集合admins,例如“Mary Lane”。在文档中我有字段:
email: "userMailId@mail.com"
uId: "firestore_user_Id"
Run Code Online (Sandbox Code Playgroud)
这uId是 Firestore 用户 ID。要写入的数据是一个对象,Message并且是:
new Message(uId, title, messageBody, timestamp)
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试将与存储在集合中request.auth.uid的 id进行匹配:admins
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write: if request.auth.uid == resource.data.uId;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是写的还是我做错了什么。任何帮助表示赞赏。
由于管理员的姓名在此规则中不可用allow write: if request.auth.uid == resource.data.uId;,因此无法查找文档来检查他们是否是管理员。
您需要一个集合,为每个管理员保存一个文档,并将其 UID 作为文档键/名称。一旦你有了这个,你可以检查规则中是否存在这样的文档:
allow write: if exists(/databases/$(database)/documents/admins/$(request.auth.uid));
Run Code Online (Sandbox Code Playgroud)
另请参阅有关访问其他文档的文档。
| 归档时间: |
|
| 查看次数: |
1787 次 |
| 最近记录: |