允许对Firebase Firestore中的一个特定集合具有读取访问权限

时间:2020-04-04 22:45:16

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

在我的Android应用上,我正在使用Firebase Firestore存储要查询的“用户名”集合,然后用户登录以检查所选用户名是否可用。

目前,我的项目有2个主要集合:“用户”和“用户名”。我试图仅在“用户名”集合中允许“读取”访问权限。我的程序失败,因为当我尝试在对用户进行身份验证之前查询“用户名”集合时,它说我没有正确的权限。

我的规则非常基础,但是我想知道是否可以通过某种方式修改它们以使我的项目正常工作。规则如下:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

直观的想法,firestore数据库的外观如下:

enter image description here

1 个答案:

答案 0 :(得分:8)

如果您要对“用户名”集合进行其他处理,请按名称将其命名,并为所有人分配完全读取权限:

    match /usernames/{id} {
      allow read: if true;
    }

我建议花些时间研究documentation on security rules,以更好地了解它们的工作原理,并学习如何自行制定规则。