【问题标题】:Multiple user access to Realtime Database Path?多用户访问实时数据库路径?
【发布时间】:2022-01-08 04:35:48
【问题描述】:

我目前正在开发一个利用实时数据库的网络应用程序。目前我的安全规则设置为允许每个用户访问他们的 UID 路径。

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

我现在正在尝试添加一个管理部分,其中特定用户可以访问整个数据库,有没有办法同时授予对特定 uid 以及所有者的 id 的读/写访问权限路径?

我的数据库结构如下所示;

客户端 -> UID -> 数据

我已经阅读了有关管理员 SDK 和用户组的信息,但是我需要做的只是将项目附加到数据库中,所以我认为如果我可以授予某个管理员用户访问权限会更容易吗?

任何意见/建议将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    我通常授予数据库更高级别(有时甚至是根)的管理用户的完全访问权限。例如,假设您有一个 /users 节点,我会这样做:

    "users": {
      ".read": "auth.uid === 'uidOfYourAdminUser'",
      ".write": "auth.uid === 'uidOfYourAdminUser'",
      "$uid" :{
        ".read": "auth.uid === $uid",
        ".write": "auth.uid === $uid"
      }
    }
    

    由于权限级联下降,管理员现在拥有所有用户的读/写权限。


    有很多方法可以识别应用程序管理员。例如,您还可以将其 UID 列表保存在单独的节点中,如下所示:

    "admins": {
      "uidOfYourAdminUser": true
    }
    

    然后在/users的规则中这样检查:

    root.child('admins').child(auth.uid).exists()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 2021-04-23
      • 2018-09-07
      相关资源
      最近更新 更多