我正面临Firebase安全规则的严重问题。我想将read
设置为false,以阻止搜索到的用户。这是我的数据库结构。
users:{
uid1:{
name:"Joe",
created:1226287
},
uid2:{
name:"John",
created:1273725
},
uid3:{...},
uid4:{...},
...
},
blocked:{
uid1:{
uid2: true,
uid4: true
}
}
考虑以上结构,假设user2
通过键入“ Joe”的名称来搜索users
节点下的用户,然后单击Enter。我是这样设置我的Firebase规则的。
users:{
$uid:{
".read":"!root.child('blocked').child($uid).hasChild(auth.uid)"
}
}
如果user2
查询user/user1
路径,则此规则有效。但是当user2
搜索时,如何防止他获取被阻止的用户数据。
答案 0 :(得分:1)
没有直接方法来获取尚未阻止该特定用户的用户列表。但是,如果用户正在基于用户名或其他基于用户的条件进行搜索,那么最好的工具就是Firebase Functions。
实现该功能的步骤(考虑基于名称的搜索)(从客户端调用firebase函数并传递搜索名称):
为什么在这种情况下Firebase Function是最佳选择?因为这些功能是在安全的环境中执行的,并且可以绕过安全规则。