数据的结构如下:
leads
|__(ID)
|__name
|__email
|__userID
当前火力规则:
{
"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"
}
}
}
}
2 回答
该规则确实有效 . 我用来运行模拟的路径是另一个父节点的ID,因此实际数据不存在,模拟失败 .
当您向用户授予对任何节点的访问权限时,您隐式地授予该用户对该节点及其下所有内容的访问权限 . 您无法切断对某人获得更高级别阅读权限的访问权限 . 当您为所有经过身份验证的用户授予"leads"访问权限时,您对"$id"的规则实际上对经过身份验证的用户完全没有影响 .