【问题标题】:How to restrict users to read/write the data based on phone number in Firebase rules如何限制用户根据 Firebase 规则中的电话号码读取/写入数据
【发布时间】:2018-11-12 09:59:17
【问题描述】:

目前,我已经实现了一个类似于下面的项目文件夹结构

Project folder structure

我在我的代码中添加了电话验证。

现在借助 Firebase 规则,我想根据经过身份验证的电话号码限制我的用户访问孩子(电话号码 1)。

例如,如果我使用电话号码“9999999999”登录,那么我想在 Firebase 规则中限制用户只能访问“9999999999”的孩子。

你能建议我在这里提高安全性吗?

【问题讨论】:

  • 请不要在问题中包含图片和链接。将代码和结构包含为文本。要获取您的 Firebase 结构,请使用 Firebase 控制台->导出 JSON 并复制粘贴您的结构的 sn-p。见images and links are evil。此外,使用电话号码作为键可能会导致一些痛苦。将密钥与数据解除关联可能会更好。这样,如果电话号码发生变化(他们确实发生了变化),您将无需删除并重新创建引用该号码的所有节点。

标签: firebase firebase-security


【解决方案1】:

您可以从users auth object 访问电话号码,因此您可以使用它来限制安全规则。以下是 Firestore、RTDB 和 Storage 中的示例

火库

match /databases/{database}/documents {
    match /users/{phoneNumber} {
      allow read, write: if request.auth.token.phone_number == phoneNumber;
    }
}

实时数据库

{
    "rules" : {
        "users" : {
            "$phoneNumber" : {
                ".read" : "request.auth.token.phone_number == $phoneNumber",
                ".write" : "request.auth.token.phone_number == $phoneNumber"
            }
        }
    }
}

存储

service firebase.storage {
    match /b/{bucket}/o {
        match /users/{phoneNumber} {
            allow read, write: if request.auth.token.phone_number == phoneNumber;
        }
    }
}

【讨论】:

    猜你喜欢
    • 2018-12-22
    • 2015-01-10
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    相关资源
    最近更新 更多