firebase - Firebase 安全规则——使用用户文档中的属性
问题描述
我正在努力使我的 Firebase 安全规则发挥作用。我只想允许在用户文档(存储在集合中)中Nouns
具有属性(布尔值)的用户对集合中的文档进行写访问。'admin' == true
Users
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /Users/{userId}/{documents=**} {
allow read, write: if request.auth != null
&& request.auth.uid == userId
}
match /Nouns/{documents=**} {
allow read: if request.auth != null
}
match /Nouns/{documents=**} {
allow read, write: if request.auth != null
&& resource.data.admin == true
}
}
}
当我尝试在Nouns
集合中的文档上写入时,规则游乐场会出现以下错误:
错误:simulator.rules 行 [17],列 [13]。属性 admin 在对象上未定义。
谁能让我知道我做错了什么?
解决方案
resource.data
将包含在 Nouns 集合中被访问的文档的数据。如果要从用户文档中读取数据,请get()
改用:
match /Nouns/{documents=**} {
allow read, write: if request.auth != null
&& get(/databases/$(database)/documents/Users/$(request.auth.uid)).data.admin == true
}
集合名称区分大小写,因此请确保输入正确。
推荐阅读
- json - 使用带有 json 规范化的 pandas
- python - 如何在python中放置写excel文件?
- javascript - 如何阻止不和谐机器人回复自己或其他机器人?(discord.js)
- python - 只允许浮点数,带一个小数点和一个负号(Python/Kivy/Regex)
- c++ - 用于获取抛出异常详细信息的现代 C++ 机制
- pandas - DatabaseError:提供的绑定数量不正确
- java - 有没有办法用我的 CompletableFuture 代码解决这个内存泄漏?
- json - 如何在 jsx 中映射具有图像和文本信息的 json 字符串
- neo4j - 使用 4.0-enterprise docker 时,Neo4j 浏览器似乎迷失了方向
- reactjs - POST 请求在提交时使用 fetch 和 async/await