2015-11-03 55 views
0

在下面的截图中,我的details分支/节点包含大量以random-id命名的细节。如示例所示,8641260c-900...是一个详细记录,还会有其他几个类似的记录。Firebase - 安全规则限制写入节点所有者/创建者

我想知道我的.write规则是否正确?我想启用限制,以便当前auth.id与现有记录的user字段完全匹配。

我也想限制删除记录(通过.remove)。
我可以简单地将&& !data.exists() || newData.exists()添加到.write规则吗?

在此先感谢。

enter image description here enter image description here

回答

1

我想知道我的.WRITE规则是否正确与否?

首先,让".read":true".write":true到根将覆盖所有子节点规则true。因此,为子节点指定的任何规则都将变得多余。

我想启用限制,以便当前auth.id与现有记录的用户字段完全匹配。

{"rules":{ 
    "existing_record":{ 
     "user":{ 
      ".write":"newData.isString() && auth.uid == newData.val()" 
     } 
    } 
}} 

我也想限制的记录(通过卸下摆臂)的缺失。

newData.exists()将防止删除节点。 newData表示操作发生后数据的外观。因此,通过确保在操作之后存在newData,禁止删除节点。