【问题标题】:Only allow document to be read if ID is known [duplicate]仅当 ID 已知时才允许读取文档 [重复]
【发布时间】:2021-12-01 18:02:39
【问题描述】:

我有一个名为 proposals 的集合,我想禁用它的列表,并且只有在用户知道 ID 的情况下才允许获取。

Firebase 可以吗?

我目前失败,因为允许“读取”,但没有这个我无法读取文档。

match /proposals/{uid} {
  allow list, update, delete: if false;

  allow create, read: if true;
}

【问题讨论】:

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


    【解决方案1】:

    进行这种授权是很常见的,是的,这是可能的。 Firestore 安全规则向我们提供了request.auth.uid,其中包含发出请求的用户的 UID,如果未经身份验证,则为 null。

    因此,您可以将该信息与相等运算符一起使用:

    match /proposals/{uid} {
      allow list, update, delete: if false;
    
      // Allow getting Documents if the Document ID is equal to the currently uid of the authenticated user who is making the request.
      allow get: if request.auth.uid != null && request.auth.uid == uid;
      allow create;
    }
    

    您应该使用get 来定义适用于任何用户获取文档的规则。请注意,read 适用于任何类型的读取请求,其中包括 getlist

    有关安全规则和身份验证的更多信息:https://firebase.google.com/docs/rules/rules-and-auth

    【讨论】:

    • 阅读理解 uid != id
    • request.auth.uid == uid 将只允许读取与用户 ID 具有相同价值的文档。
    猜你喜欢
    • 2021-06-22
    • 2022-11-02
    • 2019-03-30
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多