默认设置提供完全访问权限:
{
"rules": {
".read": true,
".write": true
}
}
为了测试我对Firebase指南和文档中的规则编写的理解,我(现在正在撤退)尝试通过为4个父节点编写规则来实现相同的结果。
如果它有所不同,前两个节点只有值,没有子节点。 ** Sidequest:他们仍称为节点吗?
以下规则导致与上述规则更改为false读取和写入时相同的行为。
{
"rules": {
"myNode1": {
".read" : true,
".write" : true
},
"myNode2" : {
".read" : true,
".write" : true
},
"myNode3" : {
".read" : true,
".write" : true
},
"myNode4" : {
".read" : true,
".write" : true
}
}
}
我的规则有什么问题?
更新/背景:
我有一个停止在这里运行的authDataCallback(在if (authData) {
子句中):
var ref = new Firebase("https://<my>.firebaseio.com")
ref.once("value", function(snapshot){
发现如果我将ref var更改为更具体的内容:var ref = new Firebase("https://<my>.firebaseio.com/myNode1")
,则authDataCallback将完整运行。
肯定没有必要制作整个数据库的快照;这是获取我需要的数据的一种混乱方式。我已经更新了,但考虑到我对整个数据库进行了读写操作,我仍然对为什么规则阻止回调感到困惑。
答案 0 :(得分:3)
我认为这是基于所提供信息的答案:
您发布的两套规则不同。第一集
{
"rules": {
".read": true,
".write": true
}
}
允许每个人对
中的firebase中的每个节点(包括父节点)进行读写访问https://<my>.firebaseio.com
第二组规则允许每个人访问firebase引用中的特定节点,但阻止访问所有其他节点,包括访问父节点。在更新中,代码尝试读取没有为其定义规则的父节点,因此默认情况下读取和写入都是false。
所以说你有以下结构:
https://whirlygig.firebaseio.com
Whirlygig
someRandomData: "3.141"
otherRandomData: "6.02"
myNode1
firstName: "first"
lastName: "last"
myNode2
first: "first"
last: "last"
使用第一组规则,每个人都可以访问someRandomData以及myNode1,myNode2等。
使用第二组规则,每个人只能访问myNode1和myNode2,但无法访问someRandomData