如何使用Firestore的rules.duration和rules.timestamp保护数据?

时间:2018-12-19 02:26:08

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

JS / Node.js解决方案:

如何使用Firestore的rules.duration和/或rules.timestamp或其他Firestore规则来确保每天可以创建文档?

以另一种方式,用户最多每天创建一次评论/评论/推文?那么如何使用Firestore安全规则强制执行?

例如,星期一(2018年12月24日),我可以写一个新评论。星期二(2018年12月25日)我可以写另一个新评论。但是,如果我要在星期二(2018年12月25日)写第二条新评论,那将是不允许的。

该解决方案应该能够每天,每周,每月或每季度工作。

1 个答案:

答案 0 :(得分:1)

安全规则没有时间感,只是发生某些访问的当前时间以及其他文档中的其他时间戳。因此,您将不得不在其他文档中使用时间戳来限制访问。

我能想到的唯一方法是与Cloud Functions结合使用。每个用户可以有一个文档,作为新帖子数据的写入位置。该文档上的规则将检查用户是否在做两件事:

  1. 将当前时间(服务器值时间戳记)写入已知字段。
  2. 当前时间也不少于自该字段的最后一次写入以来所允许的时间。

写入成功后,Cloud Function可以触发该写入,然后将来自该文档中其他字段的帖子数据复制到该帖子必须驻留的最终文档中。

或者您可以简化一些事情,跳过安全规则,只是拥有一个Cloud Function,它可以通过查询该用户最近的两个最新帖子并检查他们的帖子来删除不符合您的发布频率规则的传入文档时间戳。