Android Firebase实时数据库允许超级用户编辑子用户数据

Android Firebase实时数据库允许超级用户编辑子用户数据,android,firebase-realtime-database,firebase-security,Android,Firebase Realtime Database,Firebase Security,我想允许超级用户通过kotlin中编写的Android应用程序编辑实时数据库中的子用户数据。目前我只允许一个id为“Sv6M~~~~~~”的用户编辑所有用户数据。如何获取规则中的路径并将其与超级用户下列表中的ID匹配?目前,我在代码中硬编码了它,因为我不知道如何获取列表的路径并在“规则部分”中遍历它 Od关于此需求的正确数据结构和方法是什么 实时数据库中的数据结构: 我的规则: "rules": { "products": { &

我想允许超级用户通过kotlin中编写的Android应用程序编辑实时数据库中的子用户数据。目前我只允许一个id为“Sv6M~~~~~~”的用户编辑所有用户数据。如何获取规则中的路径并将其与超级用户下列表中的ID匹配?目前,我在代码中硬编码了它,因为我不知道如何获取列表的路径并在“规则部分”中遍历它

Od关于此需求的正确数据结构和方法是什么

实时数据库中的数据结构:

我的规则:

  "rules": {
    "products": {
      "$uid":{
    ".read": "$uid === auth.uid || auth.uid === 'Sv6MhRXwd5SXxC2gZw2FRLS9v2K3'", // Here I would like to match super-user with list of sub-users which he has
    ".write": "$uid === auth.uid || auth.uid === 'Sv6MhRXwd5SXxC2gZw2FRLS9v2K3'"
      }
    },
        "users": {
      "$uid":{
    ".read": "$uid === auth.uid",
    ".write": "$uid === auth.uid"
      }
    }
  }
} ```


您不能在安全规则中迭代任何内容,因为在这种情况下性能是不可预测的。但我不确定您的用例是否可行,因为还不清楚为什么允许用户编写产品。你能解释一下为什么用户被允许或不被允许写产品/产品吗?@FrankvanPuffelen一般来说,我想监督子用户购物清单。例如,孩子想买薯条、牛奶和面包。在某个时候,妈妈想在这个列表中添加一瓶可口可乐,这样她就可以在孩子在店里的时候编辑她的孩子列表。在同一点上,她可以管理几个孩子,所以有一对多的关系,这就是为什么我在考虑名单。也许还有另一种方式可以授予在kids app/db上读/写的权限?用例很清楚,但我很难将其转换为数据结构和规则。什么时候应该允许/拒绝对
产品
/
用户
进行读/写操作?@FrankvanPuffelen只有用户自己可以编辑数据库中的
用户
数据,这样妈妈以后可以添加她的孩子。所以我认为
用户
没有任何变化。在
products
中,如果auth.uid是您的uid(这很明显),并且
users
表中的某个人具有子用户的uid,则允许您读/写。但您之前说过,我不能遍历列表,所以必须更改数据结构。使用
admin
标志的想法是不好的,因为有很多妈妈会访问非他们孩子的数据。我不知道如何重构/修复它。@FrankvanPuffelen你认为这样创建应用程序是可能的吗?