当我认为我的规则应该允许时,Firebase 模拟器阻止写入
Firebase Simulator blocking write, when I think it should be allowed by my rules
我正在编写一个简单的 Firebase 应用程序。所有逻辑现在都可以正常工作,但我正在尝试编写一些安全规则以至少阻止有人弄乱我的所有数据。
我不跟踪用户或对他们进行身份验证,任何人无需登录即可使用我的应用程序。
我有一份这种格式的足球运动员名单:
Player
-results
-0
-1
-2
-3
每个结果都有一个名为 Points
的字段,我希望它是可写的,但是一个名为 Name
的字段,我不希望它是可写的。
我已经执行了以下规则:
{
"rules": {
".read":true,
"Player" : {
"results": {
"$results_id": {
".read":true,
"Name":{
".read":true,
".write":false
},
"Points":{
".read":true,
".write":true,
}
}
}
}
}
}
但是当使用模拟器将{ "Points" : 2}
写入/Player/results/1
时,我得到一个错误信息:
Attempt to write {"Points":2} to /Player/results/1 with auth=null
/
/Player
/Player/results
/Player/results/1
No .write rule allowed the operation.
Write was denied.
我以为 $record_id
是一个匹配 ID 的通配符,显然我错了,但是有人可以给我解释一下吗?
就像读取操作一样,您需要在读取级别获得读取权限,对于写入操作,您需要在写入级别获得权限。
您正在执行对 /Player/results/1
的写入,这是不允许的。
您可以写信给 /Player/results/1/Points
。因此,如果您将操作更改为使用值 2
写入 /Player/results/1/Points
,它将被允许。
我正在编写一个简单的 Firebase 应用程序。所有逻辑现在都可以正常工作,但我正在尝试编写一些安全规则以至少阻止有人弄乱我的所有数据。
我不跟踪用户或对他们进行身份验证,任何人无需登录即可使用我的应用程序。
我有一份这种格式的足球运动员名单:
Player -results -0 -1 -2 -3
每个结果都有一个名为 Points
的字段,我希望它是可写的,但是一个名为 Name
的字段,我不希望它是可写的。
我已经执行了以下规则:
{
"rules": {
".read":true,
"Player" : {
"results": {
"$results_id": {
".read":true,
"Name":{
".read":true,
".write":false
},
"Points":{
".read":true,
".write":true,
}
}
}
}
}
}
但是当使用模拟器将{ "Points" : 2}
写入/Player/results/1
时,我得到一个错误信息:
Attempt to write {"Points":2} to /Player/results/1 with auth=null / /Player /Player/results /Player/results/1 No .write rule allowed the operation. Write was denied.
我以为 $record_id
是一个匹配 ID 的通配符,显然我错了,但是有人可以给我解释一下吗?
就像读取操作一样,您需要在读取级别获得读取权限,对于写入操作,您需要在写入级别获得权限。
您正在执行对 /Player/results/1
的写入,这是不允许的。
您可以写信给 /Player/results/1/Points
。因此,如果您将操作更改为使用值 2
写入 /Player/results/1/Points
,它将被允许。