【问题标题】:Where does this value in Firebase realtime db rules refer to?Firebase 实时数据库规则中的这个值指的是哪里?
【发布时间】:2021-05-16 00:52:23
【问题描述】:

我的 firebase 实时数据库的规则包含以下内容:

{
  "rules": {
    "projects":{
      ".indexOn": "parent_project_uuid",
      ".read":  true,
      "$UUID" : {
        "people" : {
          ".read" : "auth.uid === 'AIzaxxx'",
          ".write" : "auth.uid === 'AIzaxxx'"
        }
      }
    }
  }
}

知道在哪里可以找到AIzaxxx 的值吗?我需要另一个数据库的规则,但找不到这个值的来源。

【问题讨论】:

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


    【解决方案1】:

    它看起来像一个特定用户的硬编码 UID,这意味着特定用户可以读取和写入项目中任何特定用户的整个 people 节点。

    当我刚开始一个项目时,我经常自己这样做,我创建一个(通常是匿名的)用户,然后在安全规则中只提供该用户的 UID 访问权限。所以它使我成为最初的应用程序管理员。

    稍后您将通过适当的 ACL 系统添加(或替换)它,将可以读取项目的用户存储在数据库中,然后使用以下内容从您的安全规则中检查:

    ".read": "root.child('project_admins').child($UUID).child(auth.uid).exists()"
    

    【讨论】:

    • 非常感谢弗兰克!所以只是为了确保:当我转到 Firebase > Authentication > 然后搜索该特定 UID 时,我找不到任何具有此 UID 的用户。我是否可以由此得出结论,为其设置该线路的用户显然不再存在并且规则中的该线路不再有效地做任何事情?还是我没有在正确的位置找到具有此 UID 的用户?
    • 在安全规则级别上AIzaxxx 只不过是一个字符串,因此没有强制执行它的存在。确实可能是该用户已从项目中删除,或类似情况。
    猜你喜欢
    • 2021-02-24
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多