Json Firebase安全规则?
我似乎很难遵守firebase的安全规则。我已经阅读了指南,但是模拟器的结果描述得不够详细(如果我们可以将鼠标悬停在一个节点上,并弹出一个按钮来更新规则,那就容易多了) 我的结构是这样的:Json Firebase安全规则?,json,node.js,firebase,firebase-security,firebase-authentication,Json,Node.js,Firebase,Firebase Security,Firebase Authentication,我似乎很难遵守firebase的安全规则。我已经阅读了指南,但是模拟器的结果描述得不够详细(如果我们可以将鼠标悬停在一个节点上,并弹出一个按钮来更新规则,那就容易多了) 我的结构是这样的: chats - randomChatId01 - name: "awesome chat" - members: - userId01 : true - userId02 : true - randomChatId02 - members:
chats
- randomChatId01
- name: "awesome chat"
- members:
- userId01 : true
- userId02 : true
- randomChatId02
- members:
- userId02 : true
- randomChatId03
- members:
- userId01 : true
- userId02 : true
- ...
我只希望用户能够读取聊天节点,其中节点的子节点成员包含经过身份验证的用户的auth.uid
因此,在本例中,如果userId01已登录,则她将只有对randomChatId01和randomChatId03的读取权限
这是我的规则:
{
"rules": {
"chats": {
"$chat": {
".read": "data.child('members').val().contains(auth.uid)"
}
}
}
}
但是,它会在模拟器中返回以下内容:
Attempt to read /chats with auth={"provider":"anonymous","uid":"eF4ztDEXz7"}
/
/chats
No .read rule allowed the operation.
Read was denied.
这是因为Firebase安全规则在您读取的位置进行评估 您正在尝试阅读
/chats
。用户没有/chats
的读取权限,因此操作会立即失败
如果您以userId01
的身份阅读/chats/randomChatId01
,则会成功
文档部分介绍了这一点。另请参见Michael Lehenbauer的回答: