【问题标题】:Firestore security rule: cost of using request.resource.data.__field__ != resource.data.__field__?Firestore 安全规则:使用 request.resource.data.__field__ 的成本!= resource.data.__field__?
【发布时间】:2018-12-20 04:50:11
【问题描述】:

拥有这样的 Firestore 安全性是否成本高(即大约读取多少次以及我们以 $ 收取多少费用):

 match /profiles/{document=**} {
   allow create: if request.auth.uid != null
   && (request.resource.data.firstName is string && resource.data.firstName != request.resource.data.firstName)
   && (request.resource.data.lastName is string && resource.data.firstName != request.resource.data.firstName)
  && (request.resource.data.username is string && resource.data.username != request.resource.data.username)
  && (request.resource.data.email is string && resource.data.email != request.resource.data.email)
}

【问题讨论】:

  • 这里有两个完全不重叠的不同问题。您能否将它们分成两个问题,以便每个问题都有更好的机会被独立回答和接受?就个人而言,我不明白你的第二个问题。也许您应该解释一下您期望在某些示例数据库操作中发生什么。
  • @DougStevenson 我将它们分成 2 个问题。这是问题stackoverflow.com/q/53862818/3073280

标签: firebase google-cloud-firestore


【解决方案1】:

根据documentation,您需要为安全规则中的 get() 和 exists() 请求付费:

使用 get() 和 exists() 函数,您的安全规则可以 根据数据库中的其他文档评估传入请求。

继续:

使用这些函数在您的数据库中执行读取操作, 这意味着即使您的 规则拒绝请求。有关更多信息,请参阅 Cloud Firestore 定价 具体的结算信息。

因此,如果您的规则不使用 get() 或 exists(),那么您就没有与规则相关联的额外计费。您似乎没有在此处使用这些功能中的任何一个,因此我预计不会产生额外费用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-07
    • 2019-09-20
    • 2018-08-06
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 2018-10-19
    • 2019-07-05
    相关资源
    最近更新 更多