【问题标题】:Role based rules in firebase storageFirebase 存储中基于角色的规则
【发布时间】:2020-11-02 21:19:04
【问题描述】:

我有一个包含多个组的数据库 - 每个组都有自己的角色(管理员、模组等)

我在 Firestore 上设置了规则。

如何在存储规则上复制它?

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-storage firebase-security


    【解决方案1】:

    简而言之,你不能不进行认真的修改。

    存储规则无法访问 Firestore 文档。所以你在 Firestore 中的所有关系都不能在 Storage 中使用。

    您可以使用 Firebase Auth custom claims 附加可在 Firestore 和 Storage 中使用的每个用户数据,但这意味着您必须将该关系数据复制到这些声明中,并在后端代码中保持同步。

    您还可以将 Firestore 中的数据复制到附加到存储中文件的 metadata 中,并在安全规则中使用该元数据来确定谁可以读取或写入单个文件。

    这些是您唯一可行的选择,无需创建您自己的强制安全性的后端 API 端点。

    【讨论】:

    • 我已经设置了自定义声明。它是这样的:claims: { claim: [groupId: ''group1", role: "admin"], ... } 你能举个例子在规则中使用声明吗?有没有办法搜索数组?
    • 参见文档中的request.auth.tokenfirebase.google.com/docs/reference/security/storage#auth
    • request.auth.token.claims.hasAny([ { 'groupId': groupId, 'role': 'admin' }, { 'groupId': groupId, 'role': 'moderator' } ]) 而不是使用 Firestore :D
    猜你喜欢
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2023-04-05
    • 2020-05-23
    • 2017-08-11
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多