firebase - Firestore Firebase 数据库规则,允许管理员编写
问题描述
大家好,我需要帮助以使用户能够阅读所有内容但不能写作。并使管理员能够编写和阅读所有内容。
我有带有文档的用户集合,每个文档都有角色,如果它是管理员帐户,它会说角色 = 'admin' 否则它会说'常规'
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if true;
allow write: if get(/databases/users/documents/users/$(request.auth.uid)).data.role == 'admin';
}
}
}
我写了这个,但它没有解决任何问题
- - - - -更新 - - - - -
这对我来说是一个修复,谢谢。
get(/databases/$(database)/documents/users/$(request.auth.uid))
但我仍然无法从客户端做任何事情。我用游乐场模式检查了控制台,规则实际上很好,如果它的管理员 uid 则返回 true。我猜这是客户端问题,因为它可能不读取 uid。知道如何解决吗?
解决方案
您的规则中有错字:
get(/databases/users/documents/users/$(request.auth.uid))
应该
get(/databases/$(database)/documents/users/$(request.auth.uid))
推荐阅读
- node.js - TypeError:无法使用 try catch 读取未定义的属性“内容”?
- r - 使用字符作为线性模型的对象(R)
- html - 如何在同一行显示元素?
- javascript - 通过索引数组在数组数组中查找项目
- html - 如何在列表项中居中项目?
- python - 如何将多个演员放在一个列表中并让他们移动 - python pygame
- python - 解析波斯语中由半空格 (\u200c) 连接的两个单词
- python - 无法使用 python 和 selenium 使用 xpath 定位元素
- java - 如何修复它以输出我想要输出的内容?
- amazon-web-services - 在 AWS 上设置 Terraform