我只想将.write权限授予那些具有isAdmin:true身份验证的用户。以下是数据库的结构。在客户端(用户(节点中,uid是Firebase生成的auth uid。
{
"clients" : {
"-M8bGQaB....." : {
"isAdmin" : true,
"uid" : 5gvR1GzT...
}
},
"products" : {
"-M81GzT....." : {
"productName": "Product 1"
},
"-M81GzT....." : {
"productName": "Product 2"
}
}
使用当前的数据结构,无法在安全规则中查找用户配置文件,因为安全规则无法在所有用户中搜索。
这就是为什么存储用户的正确数据结构使用他们的UID作为密钥的原因。在你的情况下,这看起来像:
"clients" : {
"5gvR1GzT..." : {
"isAdmin" : true
}
},
使用此JSON,只有当用户UID的isAdmin
属性设置为true
时,才能允许用户编写产品,其中包含:
{
"rules": {
"products": {
"$productid": {
".write": "root.child('clients').child(auth.uid).child('isAdmin').val() == true"
}
}
}
}