Firebase 安全规则:如果用户 uid 作为文档存在于集合中则允许

Firebase Security Rules: Allow if user uid exists in a collection as a document

我正在收集我的管理员用户 uid 作为“管理员”集合中的文档。如果用户在该集合中有他们的 uid 作为文档,我想让用户阅读。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /admins/{document=**} {
      allow write; // Everyone should be able to write
      allow read: if request.auth.uid == ; // Only read if /admins/{youruid}
    }
  }
}

您可以使用 exists() 检查文档是否存在。尝试重构您的规则,如下所示:

match /admins/{document=**} {
  allow read: if exists(/databases/$(database)/documents/admins/$(request.auth.uid)); 
  // Only read if /admins/{youruid}
}

您可以在 documentation 中阅读有关 exists() 的更多信息。