使用 'now' 的 Firebase 安全时间规则

Firebase security time rule using 'now'

我有一个 Firebase 安全规则试图在字段时间戳尚未通过时允许写入,即应该允许修改,直到时间超过时间戳数据字段中设置的时间。

"tips": {
    ".read": true,
    "$user_id": {
    "tips": {
      "$game_id": {
      ".write": "root.child('/games/' + $game_id + '/timestamp/').val() > now"
      }
    } 
  }

为了让这条规则起作用,我有 2 个示例时间戳字段:

timestamp: 1593840696 
timestamp: 1393840696

虽然我没有验证 'now' 是什么,但我知道它是纪元时间,当前 date/time 大约是 1493840696。写入 Firebase 时,我希望第一个条目成功更新(它的时间戳在 'now' 时间之后)和第二次失败,就像过去一样。

不过我看到的是两条记录都不允许使用此规则更新?如果我将大于“>”的值更改为小于“<”的值,它们都可以工作。奇怪的?看起来 'now' 的值可能大于 1593840696.

".write": "root.child('/games/' + $game_id + '/timestamp/').val() < now"

在这种情况下,'now' 的值是多少?关于如何工作 through/debug 和实现所需时间戳保护的任何建议?本质上需要 protect/allow 数据更改,直到时间戳字段结束。

我无法使用此规则来触发和保护数据,因此非常感谢您的帮助。

感谢您的任何回复。

Firebase 数据库以 毫秒 纪元起存储时间戳。获得这样一个值的一种简单方法是使用 JavaScript 的 Date.now(),就像在这个片段中:

console.log(Date.now());

在我写这篇文章时,值为:

1493869428756

为了比较,您的最高值为:

1593840696

所以你似乎在计算自纪元以来的 ,而不是毫秒。