【发布时间】:2018-12-29 14:33:57
【问题描述】:
我想通过客户端发送 Firestore 文档的创建时间,并使用 Firestore 规则验证时间以避免 Cloud Functions 调用(定价)。
场景
我正在根据这样的 Firestore 规则测试来自客户端的请求:
allow create: if request.resource.data.TIMEFIELD == request.time;
请求包含一个带有时间戳的TIMEFIELD,就像request.time一样。
问题
显然请求时间和我在发送请求之前设置为字段的时间不相等,这使得无法进行比较。
以下是文档中request.time 的定义。
不知道有没有办法在文档中设置字段等于request.time。
由于an issue with Flutter,我无法使用服务器端时间戳。
因此,我需要知道如何使用 Firestore 规则验证客户端时间戳,例如 time.now。
【问题讨论】:
-
允许创建:如果 request.resource.data.TIMEFIELD == request.time;这背后有什么原因吗?为什么要验证时间?
-
@AngusTay 因为时间戳对产品很重要,没有人应该能够操纵时间。我认为这是 Firebase 安全规则背后的主要原因。
-
这个问题似乎是 Flutter 特有的——也许自 2018 年以来就已修复?如果是这样,您是否愿意在标题中提及 Flutter 并将其添加为标签?也许整个问题都已解决,在这种情况下,这个问题只能作为历史证据。
标签: firebase flutter google-cloud-firestore firebase-security