Google cloud firestore 了解Firebase firestore规则

Google cloud firestore 了解Firebase firestore规则,google-cloud-firestore,firebase-security,Google Cloud Firestore,Firebase Security,我要安装firebase rulse。我希望根据他们的地区和存储在我的firestore数据库中的我的地区注册用户。因此,当用户要注册但该用户未登录应用程序时,我希望设置我的规则,就像任何人都可以读取地区集合一样,其他集合必须经过身份验证 所以我把规则设置成这样,对吗 rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{documen

我要安装firebase rulse。我希望根据他们的地区和存储在我的firestore数据库中的我的地区注册用户。因此,当用户要注册但该用户未登录应用程序时,我希望设置我的规则,就像任何人都可以读取地区集合一样,其他集合必须经过身份验证

所以我把规则设置成这样,对吗

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

这些规则应该按照您的建议执行--允许对
/District
中的任何内容进行未经身份验证的读取,并允许经过身份验证的用户能够读取和写入整个数据库

但有三件事:

首先,您应该熟悉控制台的规则。它允许您直接手工测试特定场景,以探索规则中发生了什么

其次,Firebase提供了一种使用仿真器进行编写的方法。这是一个很好的实践,可以确保您拥有一套全面的测试,随着应用程序复杂性的增加,这些测试是可以重复的


最后,要意识到,即使有了这组规则,您也为任何经过身份验证的用户提供了数据库的完整运行——他们可以毫无限制地读取或写入任何数据(这是绝对的)。例如,这将包括删除整个
/District
集合。这可能对你的用例来说是不可接受的,但是你应该仔细考虑这个选择。请记住,用户可以针对您的数据库运行任意代码(不仅仅是客户端应用程序的代码),仅受安全规则授予的权限的约束。

规则应按照您的建议执行--允许对
/District
中的任何内容进行未经身份验证的读取,并允许经过身份验证的用户能够读取和写入整个数据库

但有三件事:

首先,您应该熟悉控制台的规则。它允许您直接手工测试特定场景,以探索规则中发生了什么

其次,Firebase提供了一种使用仿真器进行编写的方法。这是一个很好的实践,可以确保您拥有一套全面的测试,随着应用程序复杂性的增加,这些测试是可以重复的

最后,要意识到,即使有了这组规则,您也为任何经过身份验证的用户提供了数据库的完整运行——他们可以毫无限制地读取或写入任何数据(这是绝对的)。例如,这将包括删除整个
/District
集合。这可能对你的用例来说是不可接受的,但是你应该仔细考虑这个选择。请记住,用户可以对您的数据库运行任意代码(不仅仅是客户端应用程序的代码),只需遵守安全规则授予的权限