【问题标题】:Firestore Security Rules: If timestamp (FieldValue.serverTimestamp) equals nowFirestore 安全规则:如果时间戳 (FieldValue.serverTimestamp) 等于现在
【发布时间】:2018-07-24 19:50:49
【问题描述】:

如何检查客户端上的用户是否仅使用firebase.firestore.FieldValue.serverTimestamp() 创建文档?

我有以下内容:

allow create: if request.resource.data.timestamp == ??

我应该用什么来代替??。我试过serverTimestamp()firebase.firestore.FieldValue.serverTimestamp()nownow(),但它不起作用。

在 Firebase 中可以这样做:

".validate": "newData.child('timestamp').val() === now"

我正在寻找相同的解决方案。有任何想法吗?谢谢

【问题讨论】:

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


    【解决方案1】:

    您可以使用 request.time 属性 (docs) 在安全规则中访问当前请求时间戳,该属性是 Firestore,相当于实时数据库的 now。因此,你会想要这样的东西:

    allow create: if request.resource.data.timestamp == request.time;
    

    对于serverTimestamp(),这应该评估为真。

    应始终验证安全规则中的客户端输入,即使您使用的是serverTimestamp()。安全规则不会自动知道服务器输入值而不是客户端,因此如果没有这个检查,恶意客户端可能会创建一个不同的时间。

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 2021-11-01
      • 1970-01-01
      • 2018-10-19
      • 2019-07-05
      • 2019-12-15
      • 2020-06-19
      • 1970-01-01
      相关资源
      最近更新 更多