【问题标题】:Firestore - disallow reading multiple documents at onceFirestore - 不允许一次读取多个文档
【发布时间】:2020-01-06 19:47:13
【问题描述】:
  • 我有一个 Firestore 集合。

  • 文档的 ID 是机密。您应该只能阅读您知道其 ID 的文档。 为了简单起见。我想坚持这种方法。

  • 但是,默认情况下,例如,可以从 Firestore 读取整个集合

await firestore.collection("secret_documents").get()

是否可以一次只读取一个文档,只有当它由其 ID 引用时?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    是的,这实际上很容易。要控制可以访问哪些文档,请使用 Firebase security rules for Firestore。

    默认情况下,您的安全规则将是 read 和 write,但实际上这些规则可以分解为更多 granular operations of get, list, create and update。您要做的是允许get,但不允许list 操作。来自文档:

    service cloud.firestore {
      match /databases/{database}/documents {
        // A read rule can be divided into get and list rules
        match /cities/{city} {
          // Applies to single document read requests
          allow get: if <condition>;
    
         // Applies to queries and collection read requests
          allow list: if <condition>;
        }
        ...
    

    因此,允许所有人使用get 并禁止list 调用:

    allow get: if true;
    allow list: if false;
    

    您可能需要稍微详细说明allow get 规则,因为它更常见的是限制它,例如使用 Firebase 身份验证登录到您的项目的用户:

    allow get: if request.auth.uid != null;
    

    https://firebase.google.com/docs/firestore/security/rules-query

    【讨论】:

    • 值得注意的是,这仅适用于 Web 和移动客户端 SDK。服务器 SDK 完全绕过规则。
    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 2018-03-25
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多