【发布时间】:2018-06-17 07:53:07
【问题描述】:
我想编写一个规则,当且仅当嵌套子项的 userId 与 auth uID 相同时,才允许用户阅读
我的数据库结构如下
"Chats":{
"-KDKndo4sg47f7s9":{
"-KDlmsn4hj4h4jk2n":{
"fromId" : "uid1234n5g3h34g5g5h33j33g4g43h3h3"
"text" : "Hi, Can you please help me on this?"
"toId" : "uid234553sdfj3n4hjjh3jk3h3jk4k4nm3m3"
}
}
}
在这个数据库结构中,-KDKndo4sg47f7s9 是 groupId/group 键,-KDlmsn4hj4h4jk2n 是 messageId/message 键。
这是我的规则
"Chats":{
"$groupId":{
".read": "data.child('$messageId').child('fromId').val() === auth.uid" ,
".write":"newData.child('$messageId').child('fromId').val() === auth.uid"
}
}
我使用位置测试了对规则的读取权限
/Chats/-KDKndo4sg47f7s9 和用户 ID “uid1234n5g3h34g5g5h33j33g4g43h3h3”
读取和写入总是被拒绝。但是,如果我通过如下方式直接传递密钥来编写规则
"Chats":{
"$dealId":{
".read": "data.child(‘-KDlmsn4hj4h4jk2n’).child('fromId').val() === auth.uid" ,
".write":"newData.child(‘-KDlmsn4hj4h4jk2n').child('fromId').val() === auth.uid",
}
}
允许读写。 简而言之,我不想让一个用户阅读另一个用户的消息。请帮助我。提前致谢。
【问题讨论】:
标签: ios firebase firebase-realtime-database firebase-security