Firebase规则 - 限制对拥有用户

时间:2015-06-05 13:47:29

标签: facebook firebase

我的应用正在使用Firebase的Facebook身份验证,我有以下用户集合:

{
  "fsdjf34hf98wjefj" : {
    "uid" : "facebook:543634634536"
  },
  "3298djwhy9hwd34234" : {
    "uid" : "facebook:7658899965432"
  }
}

我正在尝试限制访问权限,以便用户只能查看自己的用户:

{
    "rules": {
        ".write": true,
        "users": {
            ".read": "auth.uid === data.child('uid').val()",
        }
    }
}

尝试从JavaScript访问用户时出现以下错误:

  

错误:permission_denied:客户端无权访问   想要的数据。

是否有人知道 .read 部分的正确语法?我尝试了很多东西,但我似乎并没有掌握它背后的逻辑。

1 个答案:

答案 0 :(得分:4)

假设您的收藏品是:

"users": {
  "fsdjf34hf98wjefj" : {
    "uid" : "facebook:543634634536"
  },
  "3298djwhy9hwd34234" : {
    "uid" : "facebook:7658899965432"
  }
}

您的规则必须是:

{
  "rules": {
    "users": {
      "$user": {
        ".read": "auth.uid === data.child('uid').val()",
      }
    }
  }
}

其中的$user适用于每个用户节点

请注意,解决此类问题的最简单方法是使用Firebase信息中心中的“模拟器”选项卡来模拟操作。它会准确地告诉你为什么允许/拒绝操作,而SDK(有意)只会告诉你 操作被拒绝。