仅允许特定的儿童Firebase规则

时间:2017-04-26 05:31:32

标签: firebase firebase-realtime-database firebase-security

在我的referencing the节点下,我尝试仅允许新数据条目具有以下结构:

property of the current

除了$(function() { function fileread(file, id) { var reader = new FileReader(); reader.onload = function() { localStorage.setItem("lostimage" + id, reader.result); } reader.readAsDataURL(file); } $("input[type=submit]").on("click", function(e) { e.preventDefault(); $(":file[id^=img]").each(function() { if (this.files.length) fileread(this.files[0], this.id.replace(/\D/g, "")) }) }); }); "allUsers"之外,我不想要任何其他值。我在每个"allUsers" { "$user1: { "name": "user1Name" "uid": "12345" } } 下添加了"name"规则,但由于某种原因,以下写入被拒绝:

pic

任何人都可以帮助我理解为什么写入失败,即使我在数据中只有一个名字和uid?

2 个答案:

答案 0 :(得分:0)

屏幕快照中的第15行通过了。它检查newData.child($user)下的$user。因此,看起来写的是:/allUsers/meow/meow/(注意用户名的重复),这可能是问题的根源。

这也许可以解释为什么nameuid的第18和19行既没有通过也不失败,以及为什么第20行失败了,因为"meow"在{ {1}},即使它是有效的用户名。

答案 1 :(得分:0)

您需要通过所有路径和子路径的验证。变量 $other 捕获所有内容,包括您打算允许的路径。而是将您的规则写成这样。

"$path": {
  ".validate": "$path == 'name' || $path == 'uid'"
},