多个用户访问实时数据库路径?

Multiple user access to Realtime Database Path?

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

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

我现在正在尝试添加一个管理部分,其中特定用户可以访问整个数据库,有没有办法让 read/write 既可以访问特定的 uid,也可以访问 id路径所有者的?

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

客户端 -> UID -> 数据

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

任何 advice/suggestions 将不胜感激!

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

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

由于权限向下级联,管理员现在可以 read/write 访问所有用户。


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

"admins": {
  "uidOfYourAdminUser": true
}

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

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