Firebase存储中基于角色的规则

eh57zj3b  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(141)

我有一个数据库,它有多个组,每个组都有自己的角色(管理员,mods等)。
我在消防局有规定。
如何在存储规则上复制这种情况?

rn0zuynd

rn0zuynd1#

简单地说,你不能不认真修改。
存储规则无法访问Firestore文档。因此,您在Firestore中拥有的所有关系都无法在Storage中使用。
您可以使用Firebase Auth custom claims附加每个用户的数据,这些数据可以在Firestore和Storage中使用,但这意味着您必须将该关系数据复制到这些声明中,并在后端代码中保持同步。
您还可以将数据从Firestore复制到附加到存储中的文件的metadata中,并在安全规则中使用该元数据来确定谁可以读取或写入单个文件。
这些是您唯一可行的选择,而无需创建自己的后端API端点来实施安全性。

mefy6pfw

mefy6pfw2#

更新2023

现在可以在存储规则中访问Firestore及其值。
怀疑你有一个firestore布尔字段isAdmin,你可以检查上传用户是否满足这个要求:

service firebase.storage {
  match /b/{bucket}/o {
    match /files/{fileId} {
      allow read, write: firestore.get(/databases/documents/users/$(request.auth.id)).isAdmin
    }
  }
}

你还可以做更复杂的事情,比如检查列表等
看到这里,但不要忘记投赞成票;)

相关问题