Firebase 如何将安全规则应用于特定集合

Firebase 如何将安全规则应用于特定集合,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我有一个关于安全规则的问题 我知道我们可以这样做,以防止未经授权的用户修改Firestore中的任何节点 service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if request.auth.uid != null; } } } 如果我只想从某些根集合中删除此预防,该怎么办 我的意思是,假设我有两个

我有一个关于安全规则的问题

我知道我们可以这样做,以防止未经授权的用户修改Firestore中的任何节点

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}
如果我只想从某些根集合中删除此预防,该怎么办

我的意思是,假设我有两个根集合,叫做跟踪,传入

任何人都可以写或读,因为他们实际上不需要身份验证。但所有其他集合都需要仅由经过身份验证的用户执行读/写操作


我怎样才能做到这一点呢?

只要叫他们出来,让他们进入就行了。最宽松的规则将凌驾于所有其他规则之上。在这里,每个人都可以完全访问集合中的文档,称为all access:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
    match /all-access/{id} {
      allow read, write: if true;
    }
  }
}

但是你可能想考虑一下这是否是个好主意。任何人都可以用这些规则将数十亿份文档塞进收藏。仔细考虑您希望每个人都能在这里做些什么。

谢谢您的建议。我有两个问题:为什么你有{id}基本上,如果我删除它,会发生什么。第二个问题,每次收到付款时,我都需要在Incoming中添加一条记录。此步骤发生在对任何用户进行身份验证之前。这就是为什么我想给全局读/写。还有其他想法吗?你需要一些占位符来匹配收藏中的任何文档。您的规则必须与文档匹配。您的第二个问题可能是一个全新的问题,因此,您需要完整地描述您需要完成的任务,而不需要让世界完全访问一个集合。