【问题标题】:Firestore Rules - request.query.limit denies list collectionFirestore 规则 - request.query.limit 拒绝列表收集
【发布时间】:2019-03-18 17:52:02
【问题描述】:

我的 Firestore 数据库中有一个名为 reports

在我的 Angular 应用中,我只允许在单个查询中获取 10 个结果:

angularFirestore.collection('reports', ref => ref.limit(10));

正如预期的那样,该应用最多显示 10 个结果。

为了确保 Firestore 不会允许任何更大的限制,我编写了以下规则:

match /reports/{reportId} {
  allow list: if request.query.limit && request.query.limit <= 10
}

由于“权限缺失或权限不足”,应用无法从 Firestore 获取数据。

为了确保问题出在这句话上,我将以下规则更改为:

match /reports/{reportId} {
  allow list;
}

它奏效了。

然后我试着把这条规则写在“婴儿步骤”中,所以我写了:

match /reports/{reportId} {
  allow list: if request.query.limit;
}

令人惊讶的是它失败了。现在,我的问题是为什么request.query.limit 是一个虚假值,而我在我的应用程序中明确写了.limit(10)?毕竟,当我写allow list; 时,我得到了 10 个文件,而且还没有超过。

编辑:

看起来即使我写了以下规则,它也失败了:

match /reports/{reportId} {
  allow list: request.query;
}

【问题讨论】:

  • 一旦你在“allow”之后开始说“read”、“list”、“write”、“update”、“delete”以外的任何内容,你就在制定一条永远不会被允许的规则是的。
  • @DougStevenson 写在这里是错误的。我已经更新了我的问题。反正我已经找到答案了(往下看)

标签: google-cloud-firestore firebase-security


【解决方案1】:

docs 给出的例子误导了我:

// Limit documents per request to 50
allow list: if request.query.limit && request.query.limit <= 50

虽然应该只有:

allow list: if request.query.limit <= 50

【讨论】:

  • 它是否限制阅读文件?我想要一个解决方案来限制每个用户在 Firestore 中读取的文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
相关资源
最近更新 更多