【发布时间】:2022-01-04 12:43:03
【问题描述】:
我正在为 firebase 实时数据库的安全规则而苦苦挣扎。我的数据库结构如下:
在第一级您有聊天。在第二层有聊天伙伴(与聊天伙伴的用户 ID 连接的字符串)。在第三层,你有消息。最后一级有变量 datetime、userid 和 message。
我的问题是,我怎样才能进入第二个子节点,例如检查 auth.uid 是否在串联字符串中。我的想法是给用户读取权限,如果用户 ID 在聊天伙伴字符串中,以确保只有聊天伙伴可以读取他们的消息。或者这是一个思维错误? 我尝试了很多东西,但没有成功:
"Chats":{
".read": "root.child('Chats').val().contains('auth.uid')"
}
#更新
{
"rules": {
"Chats": {
"$chatid": {
".read": "$chatid.contains(auth.uid)",
".write": "auth != null"
}
},
"Suchencards": {
".read": "true",
".write": "auth != null"
},
"UserData": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
我正在使用 firebase 控制台上的 Playground 来检查我得到的是真还是假,但是在这种情况下我得到的是假。
#更新 2
【问题讨论】:
-
如果您使用规则游乐场进行测试,请显示所有相关值可见的游乐场屏幕截图。
-
添加了截图。
标签: firebase firebase-realtime-database firebase-security