Firebase:用于生产的 Firestore 安全规则

Firebase: Firestore security rule for production

下面是我试图在生产中实施的示例安全代码,但它一直抛出以下错误。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if request.time < timestamp.date(2022, 4, 13);
    }
  }
}

错误:

Missing or insufficient permissions.

我只想要一个用于生产的“只读”数据库。我在这里错过了什么?

allow read: if request.time < timestamp.date(2022, 4, 13);

只有当当前时间在昨天的 2022 年 4 月 13 日之前时,此语句 returns 才成立。

match /{doc=**} {
  allow read: if true;
}

您可以切换到上面显示的规则以始终允许读取操作。


但是,这些规则允许 Internet 上的任何人读取您的数据库(对于此特定用例应该没问题),但如果您还有任何其他用例,则应编写安全规则。

在 Firebase 的 Youtube 频道上的 documentation. Also checkout Get to know Cloud Firestore | Security Rules 视频中查看有关安全规则的更多信息。

如果您想要一个 read-only 数据库,那么您可能正在寻找这样的规则集:

allow read; 
allow write: if false;

另外,给你的用户最少的权限,这只是一个额外的提示。这意味着,在这种情况下,您本身可能不想授予您的用户对整个数据库的读取权限。

因此,只允许读取或写入特定集合或文档始终是更好的选择。