【发布时间】:2015-06-13 03:08:51
【问题描述】:
默认设置提供完全访问权限:
{
"rules": {
".read": true,
".write": true
}
}
为了测试我对 Firebase 指南和文档中规则编写的理解,我(现在退回到)试图通过为 4 个父节点编写规则来达到相同的结果。
如果有区别,前两个节点只有值,没有子节点。 **Sidequest:它们仍然被称为节点吗?
下面的规则导致与上面的规则更改为假读写时相同的行为。
{
"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 将完整运行。
当然没有必要生成整个数据库的快照;这是获取我需要的数据的一种混乱方式。我已经更新了,但是考虑到我对整个数据库进行了读写操作,我仍然对为什么规则阻止回调感到困惑。
【问题讨论】:
-
这些只是规则,据我所知是非常有效的规则。为了能够告诉您出了什么问题,您还应该显示您正在尝试做什么(可能执行某种形式的查询/读取操作)、您期望的结果是什么以及您得到的结果。
-
@FrankvanPuffelen 我添加了一些上下文。
-
完美,这确实是缺少的。而杰的回答是正确的:在你的第二组规则中,用户无法读取根节点,所以这个监听器不会起作用。这不是很直观,我同意。我们在文档中扩展了解释,但仍然有很多人遇到它。 firebase.com/docs/security/guide/…
-
现在我很清楚了。感谢您和杰的时间!