在firebase中,如何为多个子值提供读取权限

时间:2016-06-25 10:48:53

标签: firebase firebase-realtime-database firebase-security

这是我的结构数据

  • sampleApp

      • ITEM1
        • title:pizza
        • 价格:200 / -
      • ITEM2
        • title:burger
        • 价格:120 / -
    • 用户

      • 用户-1
        • name:username
        • 电子邮件:user@gmail.com
        • 作用
          • admin:true
          • user:true
          • superuser:true
      • 用户-2-
        • name:username2
        • 电子邮件:user2@gmail.com
        • 作用
          • admin:false
          • user:true
          • 超级用户:false

这是我的规则

rules{
  ".write": true,
  "items":{
    ".read":"root.child(users).child(auth.uid).child(role).child(admin).val()===true"      
  }
}

我的问题是当用户1:“admin = true,user = true,superuser = true”孩子必须阅读的总项目时。对于另一个用户-2:“admin = false,user = true,superuser = false”在这种情况下,只有item1必须读入子项。

如何为其编写安全规则?

1 个答案:

答案 0 :(得分:5)

根据我的理解,您希望向任何超级用户 OR 管理员授予读取权限。

您可以在安全规则中使用布尔逻辑,如下所示:

rules{
   ".write": true,
   "items":{
      ".read":"root.child(users).child(auth.uid).child(role).child(admin).val()===true 
              ||"root.child(users).child(auth.uid).child(role).child(superuser).val()===true" "      
       }
    }

希望它有所帮助;)