如何在firebase实时数据库中隐藏特定节点
我有两个关于firebase实时数据库的问题 Q1)是否可以对公众隐藏某个节点,并且只有一个人可以访问该节点 (我想在数据库中保存一个事务密钥,只有1-2个人可以从数据库中访问该密钥。)如何在firebase实时数据库中隐藏特定节点,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我有两个关于firebase实时数据库的问题 Q1)是否可以对公众隐藏某个节点,并且只有一个人可以访问该节点 (我想在数据库中保存一个事务密钥,只有1-2个人可以从数据库中访问该密钥。) Q2)如果我的数据库安全规则设置为“公共”,任何人都可以下载/访问完整的数据,或者他们必须知道结构才能从数据库访问数据。A1/是的,可以将对某个节点的访问限制为仅对用户子集的访问。有几种方法可以做到这一点。如果它是一个较小且或多或少稳定的用户子集,则可以检查其uid是否包含在列出管理员用户uid的特定节点中,如
Q2)如果我的数据库安全规则设置为“公共”,任何人都可以下载/访问完整的数据,或者他们必须知道结构才能从数据库访问数据。A1/是的,可以将对某个节点的访问限制为仅对用户子集的访问。有几种方法可以做到这一点。如果它是一个较小且或多或少稳定的用户子集,则可以检查其uid是否包含在列出管理员用户uid的特定节点中,如下所示:
{
"rules": {
"secretnode": {
//only an admin user can read
".read": "auth != null && root.child('adminusers/' + auth.uid).exists()"
},
"adminusers": {
".read": false,
".write": false
},
"othernodes": {
".read": true,
".write": true
}
}
}
例如,在数据库中,您可以按如下方式保存管理UID:
DBRoot
- adminusers
- uid1
- name: "aaaaaa"
- otherDataItem: "xxxxxx"
- uid2
- name: "bbbbb"
- otherDataItem: "yyyy"
A2/是,如果您的数据库root安全规则设置为public,“任何人(可以)下载/访问完整数据”。请注意,如中所述:
较浅的安全规则覆盖较深路径的规则。儿童规则
只能将附加权限授予父节点已经拥有的
宣布。它们不能撤消读或写权限
换句话说,这意味着如果数据库root的安全规则设置为public,任何人都可以下载表示数据的完整JSON树,而无需知道其结构。谢谢@还有一件事,如上所述,结构中的“其他节点”代表什么?例如,如果我有8个节点,其中我必须隐藏1个节点,其余6个节点是打开的,我如何设置规则?您应该为每个节点创建一个规则,类似于此其他节点的规则。但是,如果我有多个节点,这可能是一个繁忙的过程。有没有表示“一对所有”的简化想法?是的,将所有这些节点放在一个主根节点下。