Firebase 如何使用Firestore'保护数据安全;s.规则.期限和期限;时间戳?

Firebase 如何使用Firestore'保护数据安全;s.规则.期限和期限;时间戳?,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,JS/Node.JS解决方案: 如何使用Firestore的rules.duration和/或rules.timestamp或其他Firestore规则来确保文档可以每天创建 换句话说,用户每天最多创建一条评论/评论/推文?那么,如何强制使用Firestore安全规则呢 例如,周一(2018年12月24日),我可以写一篇新评论。星期二(2018年12月25日),我可以再写一篇新评论。但如果我在周二(2018年12月25日)写第二条新评论,这是不允许的 该解决方案应该能够适用于每日、每周、每月或每

JS/Node.JS解决方案:

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

换句话说,用户每天最多创建一条评论/评论/推文?那么,如何强制使用Firestore安全规则呢

例如,周一(2018年12月24日),我可以写一篇新评论。星期二(2018年12月25日),我可以再写一篇新评论。但如果我在周二(2018年12月25日)写第二条新评论,这是不允许的


该解决方案应该能够适用于每日、每周、每月或每季度。

安全规则没有时间感,除了某些访问发生的当前时间和其他文档中的其他时间戳。因此,您必须在其他文档中使用时间戳来阻止访问

我能想到的实现这一点的唯一方法是结合云功能。每个用户可以有一个文档,作为新post数据的写入位置。该文档上的规则将检查用户是否在做两件事:

  • 将当前时间(servervalue时间戳)写入已知字段
  • 当前时间也不小于自上次写入该字段以来允许的时间
  • 当写入成功时,云函数可能会在写入时触发,然后将该文档中其他字段的post数据复制到post必须存在的最终文档中


    或者你可以简化一些,跳过安全规则,只需要一个云函数,通过查询该用户最近的两篇文章并检查它们的时间戳,删除不符合发布频率规则的传入文档。

    我喜欢后一种解决方案。云功能可以删除不符合频率规则的传入文档。今后,安全规则会有时间感吗?谷歌团队会将此作为一种改进吗?我不知道,但您可以随时提交一个功能请求,解释适合您需要的规则实际上是如何工作的。我想这比你想象的要复杂。