我正在编写一个简单的Firebase应用程序。所有逻辑现在都在运行,但我正在尝试编写一些安全规则,以至少阻止某人搞乱我的所有数据。
我不会跟踪用户或对其进行身份验证,我的应用程序可供没有登录的任何人使用。
我有这种格式的足球运动员名单:
Player -results -0 -1 -2 -3
每个结果都有一个名为 MERGE INTO dbo.Tab2 AS target
USING dbo.Tab1 AS source
ON target.tab1_foreign_key = source.tab1_primary_key
WHEN MATCHED THEN
UPDATE SET target.A = source.A,
target.B = source.B,
target.C = source.C,
target.D = source.D
WHEN NOT MATCHED BY TARGET THEN
INSERT (A,B,C,D,E)
VALUES (source.A,source.B,source.C,source.D,source.E );
的字段,我希望它是可写的,但是一个名为Points
的字段,我不想写它。
我已实施以下规则:
Name
但是当使用模拟器将
{
"rules": {
".read":true,
"Player" : {
"results": {
"$results_id": {
".read":true,
"Name":{
".read":true,
".write":false
},
"Points":{
".read":true,
".write":true,
}
}
}
}
}
}
写入{ "Points" : 2}
时,我收到一条错误消息:
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.
我认为/Player/results/1
是一张符合ID的通配符,显然我错了,但有人可以向我解释一下吗?
答案 0 :(得分:3)
就像读取操作一样,在您阅读的级别需要读取权限,使用写入操作时,您需要在您编写的级别获得权限。
您正在执行对/Player/results/1
的写入,这是不允许的。
您可以写信至/Player/results/1/Points
。因此,如果您将操作更改为使用值/Player/results/1/Points
写2
,则会允许它。