Firebase:允许对不同集合进行读或写访问

Firebase:允许对不同集合进行读或写访问,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我的项目有两个主要收藏:“联系人”和“相册” 这是我的 我试图为“albums”集合中的每个人分配完全读取权限,并将写入权限限制为未经验证的用户。 同时,我希望为未经身份验证的用户分配写访问权限,并为“联系人”集合中经过身份验证的用户分配读、更新和删除权限 对于已验证的请求和未验证的请求,当前规则集在规则模拟器中均失败。规则如下: rules_version = '2'; service cloud.firestore { match /databases/{database}/docume

我的项目有两个主要收藏:“联系人”和“相册”

这是我的

我试图为“albums”集合中的每个人分配完全读取权限,并将写入权限限制为未经验证的用户。 同时,我希望为未经身份验证的用户分配写访问权限,并为“联系人”集合中经过身份验证的用户分配读、更新和删除权限

对于已验证的请求和未验证的请求,当前规则集在规则模拟器中均失败。规则如下:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /contact/{document=**} {
      allow create;
      allow read, update, delete: if request.auth != null;
    }
   }
    match /albums/{document=**}{
      allow read;
      allow write: if request.auth != null;
    }
}
firebase查询返回“onSnapshot中的未捕获错误:FirebaseError:缺少或权限不足”

查询如下:

useEffect(() => {
const unmount = firestore
  .collection("albums")
  .orderBy("date", "asc")
  .onSnapshot((snapshot) => {
    const tempAlbums = [];
    snapshot.forEach((doc) => {
      tempAlbums.push({ ...doc.data(), id: doc.id });
    });
    setAlbums(tempAlbums);
  });
return unmount;
}, []);

关于如何纠正规则有什么想法吗?

您的规则中有一个输入错误。应该是这样的:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /contact/{document=**} {
      allow create;
      allow read, update, delete: if request.auth != null;
    }    //The /albums path must be included inside /documents
    match /albums/{document=**}{
      allow read;
      allow write: if request.auth != null;
    }
  }
}

谢谢你的回答!查询现在可以工作,但规则集在规则模拟器中失败,可能它们有问题,这就是为什么我总是收到Firestore数据库未正确保护的警报。@AlexandruLupu这些规则在模拟器中失败,因为您没有为
/albums
/contact
之外的任何内容设置任何规则,因此,如果你在应用程序中没有使用任何不同的路径,你可以忽略这些警报