我有一个数据库,它有多个组,每个组都有自己的角色(管理员,mods等)。我在消防局有规定。如何在存储规则上复制这种情况?
rn0zuynd1#
简单地说,你不能不认真修改。存储规则无法访问Firestore文档。因此,您在Firestore中拥有的所有关系都无法在Storage中使用。您可以使用Firebase Auth custom claims附加每个用户的数据,这些数据可以在Firestore和Storage中使用,但这意味着您必须将该关系数据复制到这些声明中,并在后端代码中保持同步。您还可以将数据从Firestore复制到附加到存储中的文件的metadata中,并在安全规则中使用该元数据来确定谁可以读取或写入单个文件。这些是您唯一可行的选择,而无需创建自己的后端API端点来实施安全性。
mefy6pfw2#
现在可以在存储规则中访问Firestore及其值。怀疑你有一个firestore布尔字段isAdmin,你可以检查上传用户是否满足这个要求:
isAdmin
service firebase.storage { match /b/{bucket}/o { match /files/{fileId} { allow read, write: firestore.get(/databases/documents/users/$(request.auth.id)).isAdmin } } }
你还可以做更复杂的事情,比如检查列表等看到这里,但不要忘记投赞成票;)
2条答案
按热度按时间rn0zuynd1#
简单地说,你不能不认真修改。
存储规则无法访问Firestore文档。因此,您在Firestore中拥有的所有关系都无法在Storage中使用。
您可以使用Firebase Auth custom claims附加每个用户的数据,这些数据可以在Firestore和Storage中使用,但这意味着您必须将该关系数据复制到这些声明中,并在后端代码中保持同步。
您还可以将数据从Firestore复制到附加到存储中的文件的metadata中,并在安全规则中使用该元数据来确定谁可以读取或写入单个文件。
这些是您唯一可行的选择,而无需创建自己的后端API端点来实施安全性。
mefy6pfw2#
更新2023
现在可以在存储规则中访问Firestore及其值。
怀疑你有一个firestore布尔字段
isAdmin
,你可以检查上传用户是否满足这个要求:你还可以做更复杂的事情,比如检查列表等
看到这里,但不要忘记投赞成票;)