firebase – Firestore安全规则:如果timestamp(FieldValue.serverTimestamp)现在等于

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

我有以下内容:

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

我该怎么做而不是?我已经尝试了serverTimestamp()firebase.firestore.FieldValue.serverTimestamp(),现在或现在()但它不起作用.

可以在Firebase中执行此操作:

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

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

您可以使用request.time属性( docs)访问安全规则中的当前请求时间戳,该属性是现在与实时数据库等效的Firestore.因此,您需要以下内容:

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

对于serverTimestamp(),这应该评估为true.

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

相关文章
相关标签/搜索