如何使用 Firebase 规则授予 read/write 对所有节点的访问权限?
How do I give read/write access to all nodes with Firebase rules?
默认设置提供完全访问权限:
{
"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
}
}
}
我的规则有什么问题?
UPDATE/context:
我有一个在 运行 处停止的 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 将完整运行。
当然没有必要生成整个数据库的快照;这是一种获取我需要的数据的混乱方式。我已经更新了,但我仍然很困惑为什么考虑到我对整个数据库进行了读写,规则会阻止回调。
我认为这是基于所提供信息的答案:
您发布的两组规则不同。第一组
{
"rules": {
".read": true,
".write": true
}
}
允许每个人在
的 firebase 中对每个节点(包括父节点)进行读写访问
https://<my>.firebaseio.com
第二组规则允许每个人访问您的 firebase 引用中的特定节点,但阻止访问所有其他节点,包括访问父节点。在更新中,代码试图读取没有为其定义规则的父节点,因此默认情况下读取和写入都是错误的。
假设你有以下结构:
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
默认设置提供完全访问权限:
{
"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
}
}
}
我的规则有什么问题?
UPDATE/context:
我有一个在 运行 处停止的 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 将完整运行。
当然没有必要生成整个数据库的快照;这是一种获取我需要的数据的混乱方式。我已经更新了,但我仍然很困惑为什么考虑到我对整个数据库进行了读写,规则会阻止回调。
我认为这是基于所提供信息的答案:
您发布的两组规则不同。第一组
{
"rules": {
".read": true,
".write": true
}
}
允许每个人在
的 firebase 中对每个节点(包括父节点)进行读写访问https://<my>.firebaseio.com
第二组规则允许每个人访问您的 firebase 引用中的特定节点,但阻止访问所有其他节点,包括访问父节点。在更新中,代码试图读取没有为其定义规则的父节点,因此默认情况下读取和写入都是错误的。
假设你有以下结构:
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