【问题标题】:Firebase permissionsFirebase 权限
【发布时间】:2017-07-01 13:21:54
【问题描述】:

我有这种结构的数据库:

public: {
  UID_1: { ... }, UID_2: { ... }, ...
}
users : {
  UID_1: { ... }, UID_2: { ... }, ...
}

并且我想设置权限以允许仅对正确用户(uid 所有者)读取/写入“用户”,并允许对所有人读取“公共”,并为正确用户(uid 所有者)写入。 现在我有

    {
    "rules": {
      "users": {
        "$uid": {
          ".read": "auth.uid === $uid",
          ".write": "auth.uid === $uid",
        },
      },
      "public": {
         "$uid": {
           ".read": "auth.uid !== null",
           ".write": "auth.uid === $uid",
         }
       }
    }
   }

但是当我试图列出“公开”中的所有职位时 this.db.child('public').once('value', snapshot => { ... } 它没有找到任何价值。当我将整个“公共”读/写设置为 true 时,它​​可以工作。 直觉在这里不起作用

【问题讨论】:

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


    【解决方案1】:

    目前没有人对/public 具有读取权限,但每个登录用户都对其下的每个节点都有读取权限。为了能够从某个位置读取,您需要在该位置具有读取权限。

    因此,要解决此问题,请将/public 中的.read 规则上移一级:

      "public": {
         ".read": "auth.uid !== null",
         "$uid": {
           ".write": "auth.uid === $uid",
         }
       }
    

    【讨论】:

    • 像魅力一样工作,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 2017-12-26
    相关资源
    最近更新 更多