了解Firebase上的基本Firebase安全规则

时间:2020-10-06 23:32:54

标签: firebase-realtime-database firebase-security

我正在使用Firebase Auth,并阅读了许多有关安全规则,自定义声明,云功能的文档,但是我确实变得更加困惑。

请考虑以下数据结构

{
    "company": {
        "idCompany1": {"data": "Restricted to Company1s users"},
        "idCompany2": {"data": "Restricted to Company2s users"}
    },
    "users": {
        "idUser1": {
            "companies": {
                "idCompany1": true
            }
        },
        "idUser2": {
            "companies": {
                "idCompany1": true,
                "idCompany2": true
            }
        }
    }
}

我想在Firebase控制台中实现一个简单规则(Firebase安全规则),而无需修改我的数据结构。

我要配置的规则是:用户只能在其所属的公司中读取或写入信息(路径上的users / $ idUser / companies / $ idCompany === true company / $ idCompany)

目前,我仅配置了:

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

如何在Firebase控制台中配置此Firebase安全规则?

1 个答案:

答案 0 :(得分:1)

听起来您正在寻找:

{
  "rules": {
    "company" : {
      "$companyid": {
        ".read": "root.child('users').child(auth.uid).child('companies').child($companyid).val() === true"
      }
    }
  }
}

这将允许用户阅读其个人资料中列出的任何公司的/company/$companyid

注意:您将无法像rules are not filters一样读取/company