Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase-允许用户根据数据库信息访问部分数据库_Javascript_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Javascript Firebase-允许用户根据数据库信息访问部分数据库

Javascript Firebase-允许用户根据数据库信息访问部分数据库,javascript,firebase,firebase-realtime-database,firebase-security,Javascript,Firebase,Firebase Realtime Database,Firebase Security,我知道如何使用用户的UID为用户提供对数据库部分的读/写访问权限,但我想做一些稍微复杂一点的事情,我不知道怎么做。如果我有这样的数据库结构: 用户: OIXMNPUYAATTNVL17MC74WL8E2: 附件: 某些名称:“某些值” 其他名称:“其他值” 东西 某个名字 信息:“更多信息” 信息更多:“更多信息” 在这种情况下,我需要用户oixmnpuyaattnvl17mc74wl8e2能够访问数据库中其他地方指定的Some Name下的所有数据。我希望我能够正确地解

我知道如何使用用户的UID为用户提供对数据库部分的读/写访问权限,但我想做一些稍微复杂一点的事情,我不知道怎么做。如果我有这样的数据库结构:

  • 用户:

    • OIXMNPUYAATTNVL17MC74WL8E2:

      • 附件:
        • 某些名称:“某些值”
        • 其他名称:“其他值”
  • 东西
    • 某个名字
      • 信息:“更多信息”
      • 信息更多:“更多信息”
在这种情况下,我需要用户
oixmnpuyaattnvl17mc74wl8e2
能够访问数据库中其他地方指定的
Some Name
下的所有数据。我希望我能够正确地解释我的问题,这是可能的!此外,将
Stuff
Some Name
子项设置为
oixmnpuyaattnvl17mc74wl8e2
也不合适,因为其他用户可能也可以访问
Some Name


注意:我也在使用Firebase Web和Admin,使用Python(Flask)和JavaScript。

我在理解您的问题时有点困难,如果这不是您想要的,请编辑您的问题并更深入地解释您想要的

如果要将对“某个名称”的访问权限限制为仅在“users”表下授予该访问权限的用户,则可以编写一条规则来查找该用户下的“某个名称”权限。此规则将适用于应用程序的所有用户,因此任何被授予访问权限的用户都可以访问该数据

您的规则如下所示:

{
  "rules": {

    "Stuff": {
      "$someName": {
        ".read": "root.child('Users').child(auth.uid).child('accesTo').val() == $someName"
      }
    },

    // ...etc... other rules for other tables in your database

}

这方面的例子还有很多。

我在理解你的问题时有点困难,如果这不是你想要的,请编辑你的问题并更深入地解释你想要的

如果要将对“某个名称”的访问权限限制为仅在“users”表下授予该访问权限的用户,则可以编写一条规则来查找该用户下的“某个名称”权限。此规则将适用于应用程序的所有用户,因此任何被授予访问权限的用户都可以访问该数据

您的规则如下所示:

{
  "rules": {

    "Stuff": {
      "$someName": {
        ".read": "root.child('Users').child(auth.uid).child('accesTo').val() == $someName"
      }
    },

    // ...etc... other rules for other tables in your database

}

这类事情还有很多例子。

看起来很贴切。回答得好,杰里米!我真的很抱歉-我在数据库结构中犯了一个小错误-用户实际上有多个他可以访问的东西,它们都是键名,所以我需要检查是否有一个键名匹配。我该怎么做?然后您可以使用
.hasChild()
查看该用户是否列出了它:
”.read:“root.child('Users').child(auth.uid).child('accesTo').hasChild($someName)
Wow,非常感谢!非常有效!您能同时编辑您的答案吗?因为我编辑了这个问题…看起来很正确。回答得很好Jeremy!我真的很抱歉-我在数据库结构中犯了一个小错误-用户实际上有多个他可以访问的东西,它们都是关键名称,我需要检查是否有e keyname匹配。我该怎么做?然后您可以使用
.hasChild()
查看该用户是否列出了它:
。.read:“root.child('Users').child(auth.uid).child('accesTo')。hasChild($someName)
哇,非常感谢!它起作用了!你能把你的答案也修改一下吗?因为我编辑了这个问题。。。