如何限制 Firebase 实时数据库“.write”仅访问特定子键

问题描述 投票:0回答:1

我尝试在 Firebase 实时数据库 中制定规则。所以,如果

.write
只有这两个孩子,即
newData
data1
,我想允许
data1

{
  "rules": {
    ".read" : false,
    "$user": {
      ".read": true,
      ".write": "newData.hasChildren(['data1', 'data2']) && !newData.hasChild('other')"
    }
  }
}

成功不允许没有

newData
['data1', 'data2']
。但问题是,它也将允许每个数据同时具有
['data1', 'data2']
和更多其他子项。在这部分规则中,您可以看到
!newData.hasChild('other')
我尝试选择任何其他孩子作为
other
而没有
$
标记,结果证明它不起作用

firebase firebase-realtime-database firebase-security
1个回答
0
投票

您的规则仅拒绝写入名为

other
的子项,这不是您要实现的用例。

要仅允许写入

data1
data2
,您需要更深一层地定义规则:

{
  "rules": {
    ".read" : false,
    "$user": {
      ".read": true,
      ".write": "newData.hasChildren(['data1', 'data2'])",
      "data1": { ".validate": true },
      "data2": { ".validate": true },
      "$other": { ".validate": false }
    }
  }
}

因此,现在

data1
data2
子项被视为有效,但任何其他子项(如
$other
规则所示)均无效/被拒绝。

© www.soinside.com 2019 - 2024. All rights reserved.