【发布时间】:2019-08-04 14:05:54
【问题描述】:
我想授予 多个 用户访问权限,以获取他们有权在 Firebase 实时数据库中访问的“消息”集合。数据库获取将读取“/messages”并返回用户有权访问的所有消息的集合。数据库结构如下:
"messages" : {
"-L123456789": {
"access": {
"author": "user-one-id-987654"
"assigned-user-id-1234": "assigned-user-id-1234"
}
"data" : {
"theData": "Hello world!"
}
}
}
我创建了以下规则:
{
"rules": {
"messages": {
"$message_id": {
"data": {
".read": "
//if author or assigned user
data.parent().child('access').child('author').val() === auth.uid ||
data.parent().child('access').child(auth.uid).exists()
",
".write": "false"
}
}
}
}
但是,我无法获得我列为作者或指定用户的所有消息的集合。
什么规则允许列为“作者”(user-one-id-987654) 或“指定用户”(assigned-user-id-1234) 的用户通过简单地获取他们有权访问的所有消息的集合读取“/messages/”数据库路径?
我猜“消息”根中的一条规则可能就是答案?
我已经尝试了以下规则 - 它授予所有经过身份验证的用户的访问权限 - 但我希望只返回一个用户被列为“作者”或“指定用户”的集合。
{
"rules": {
"messages": {
".read": "auth.uid !== null"
}
}
}
亲切的问候 /K
【问题讨论】:
标签: javascript firebase firebase-realtime-database firebase-security