数据的结构如下:
leads
|__(ID)
|__name
|__email
|__userID
当前Firebase规则:
{
"rules": {
"leads": {
".indexOn": ["userID"],
".read": "auth !== null",
".write": "auth !== null"
}
}
这仅在用户未登录的情况下保护数据。我想增加一层保护,以确保登录的用户无法读取auth.uid !== userID
处的任何潜在客户,但我有无法在上面进行构造。
我以为这可以用,但是父级".read": "auth !== null"
似乎可以覆盖它。
{
"rules": {
"leads": {
".indexOn": ["userID"],
".read": "auth !== null",
".write": "auth !== null",
"$id": {
".read": "data.child('userID').val() === auth.uid"
}
}
}
}
答案 0 :(得分:0)
该规则实际上有效。我用于运行模拟的路径具有另一个父节点的ID,因此实际数据不存在并且模拟失败。
答案 1 :(得分:0)
向用户授予对任何节点的访问权限时,即隐式地授予该用户对该节点及其下所有内容的访问权限。您无法切断对某人已被授予较高阅读权限的孩子的访问权限。当您为所有经过身份验证的用户授予“销售线索”访问权限时,根据该规则执行的“ $ id”规则实际上对经过身份验证的用户完全无效。