首页 文章

通过userID参数保护路径

提问于
浏览
0

数据的结构如下:

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 回答

  • 0

    该规则确实有效 . 我用来运行模拟的路径是另一个父节点的ID,因此实际数据不存在,模拟失败 .

  • 0

    当您向用户授予对任何节点的访问权限时,您隐式地授予该用户对该节点及其下所有内容的访问权限 . 您无法切断对某人获得更高级别阅读权限的访问权限 . 当您为所有经过身份验证的用户授予"leads"访问权限时,您对"$id"的规则实际上对经过身份验证的用户完全没有影响 .

相关问题