【问题标题】:How to access my data field in Firebase Security Rules如何在 Firebase 安全规则中访问我的数据字段
【发布时间】:2022-01-20 00:49:10
【问题描述】:

安全规则

我正在尝试根据文档字段授予权限:

    match /users/{user}/{documents=**} {
            allow read, write: if resource.data.uid == request.auth.uid
    }

Firebase 查询

这是我的查询的样子:

query(collection(db, "users", match.params.uid, "promotors"));

错误信息

但我不断收到这条消息:

FirebaseError:权限缺失或不足。

【问题讨论】:

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


    【解决方案1】:

    您的查询不会以任何方式检查文档中某个字段中的数据,因此它永远不会满足您的这部分规则:resource.data.uid

    相反,您似乎遇到的是文档 ID 与用户的 UID 匹配的情况,您可以检查:

    match /users/{user}/{documents=**} {
        allow read, write: if user == request.auth.uid
    }
    

    另请参阅content owner only access 上的文档。

    【讨论】:

    • 嘿弗兰克!在我的用例中,我在查询中传递了一个散列的 uid。而且,真正的 uid 位于文档内的一个字段中(文档 id 也是散列的 uid)。我将使用该信息更新我的问题。
    • 您分享的代码中没有查询。您传递的 match.params.uid 被解释为文档 ID。我建议先让它使用非散列 UID(记住:UID values are not secret],然后再转到更复杂的场景。
    • 我让它在没有哈希的情况下工作。但是一旦我添加了哈希,我就无法让它工作。但是,我检查了你发送的链接,似乎散列 uid 是没用的
    猜你喜欢
    • 2022-01-19
    • 2018-12-15
    • 2020-12-22
    • 2019-06-16
    • 1970-01-01
    • 2019-08-14
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多