firebase数据库规则允许使用特定信息

时间:2016-10-18 22:52:20

标签: security firebase firebase-realtime-database

我的firebase数据库规则如下:

    {
      "rules": {
        "users": {
          "$uid": {

            ".read": "auth != null || root.child('users').child(auth.uid).child('role').val() == 'teacher'",
            ".write": "auth != null || root.child('users').child(auth.uid).child('role').val() == 'teacher'"

          }
        }
    }
}

我的目标如下:

  • 每个用户只能读/写自己的OWN数据。
  • 只有具有价值'老师'在他们相应的孩子中定义了名为' role'可以读/写每个其他用户'数据。

    如何实现此规则设置?

2 个答案:

答案 0 :(得分:5)

这似乎是您正在寻找的:

{
  "rules": {
    "users": {
      ".read": "root.child('users').child(auth.uid).child('role').val() == 'teacher'",
      ".write": "root.child('users').child(auth.uid).child('role').val() == 'teacher'",
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    }
  }
}

有了这个:

  • 教师对整个users节点
  • 具有读写权限
  • 其他用户只对自己的节点具有读写权限

答案 1 :(得分:0)

删除$uid

如何解决这个问题
  {
      "rules": {
        "users": {

            ".read": "auth != null || root.child('users').child(auth.uid).child('role').val() == 'teacher'",
            ".write": "auth != null || root.child('users').child(auth.uid).child('role').val() == 'teacher'"

        }
    }
}