我有一个称为配置文件的节点,该节点具有ID列表。 我只想允许对子节点的读取访问,并阻止读取所有配置文件。
这是我的规则,但是它允许读取所有配置文件。
{
"rules": {
"profiles":{
".read": true,
".write": false
}
}
}
这就是我的个人资料
{
"1" : {
"id" : "1",
"name" : "test1"
},
"2" : {
"id" : "1",
"name" : "test2"
}
}
答案 0 :(得分:0)
通常,您会将每个用户的配置文件存储在具有其Firebase身份验证UID值的密钥下。所以:
{
"profiles": {
"uidOfUser1": {
"id" : "1",
"name" : "test1"
}
"uidOfUser2": {
"id" : "2",
"name" : "test2"
}
}
}
在这种情况下,您可以使用以下规则对其进行保护:
{
"rules": {
"profiles": {
"$user_id": {
// grants read access to the owner of this user account
// whose uid must exactly match the key ($user_id)
".read": "$user_id === auth.uid"
}
}
}
}
在安全规则中,auth.uid
的值是当前登录到Firebase身份验证的用户的UID。没有办法欺骗该值,因此这是保护数据访问的好方法。上述规则允许用户在其auth.uid
与配置文件的密钥匹配时读取特定的配置文件。因此,uidOfUser1
或uidOfUser2
。
也请查看Firebase documentation on securing user data,它会对其进行更详细的描述。