最初,我有以下设置:
folder:{
uid1:{
f1:{}
f2:{}
}
}
我可以通过以下方式听取该uid的价值:
ref('/folder/uid').on('value', functon ....
安全规则可以是这样的:
"folders": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
},
但现在我必须文件夹共享并计划执行以下操作:
user:{
uid1:{
folderAccessRight:{
read: {fid1:true}
write: {fid1:true}
}
}
}
folder:{
fid1:{}
fid2:{}
}
可以设置安全规则以检查用户的folderAccessRight JSON上是否存在$ fid。但是,由于安全规则不能是过滤器,我无法再听顶级文件夹引用(' /文件夹')。
如果我在不同文件夹上添加单独的值侦听器而用户有N个文件夹,我需要 N个侦听器。
问题:
答案 0 :(得分:0)
使用您当前的数据结构,您可以安全访问这些文件夹。现在,每个用户只能访问他们拥有的文件夹或他们已被授予访问权限的文件夹。
问题似乎是您无法列出用户有权访问的文件夹。
与使用Firebase(以及大多数其他NoSQL存储系统)一样,解决方案是将您需要的数据添加到模型中。在您的情况下,这意味着您为每个用户添加文件夹列表: