我仅向具有 isAdmin:true 的经过身份验证的用户授予 .write 权限 下面是数据库的结构。 在 clients (用户)节点中, uid 是Firebase生成的身份验证uid。
{
"clients" : {
"-M8bGQaB....." : {
"isAdmin" : true,
"uid" : 5gvR1GzT...
}
},
"products" : {
"-M81GzT....." : {
"productName": "Product 1"
},
"-M81GzT....." : {
"productName": "Product 2"
}
}
答案 0 :(得分:0)
使用当前数据结构无法在安全规则中查找用户个人资料,因为安全规则无法在所有用户中搜索。
这就是为什么用于存储用户的正确数据结构使用其UID作为键的原因。在您的情况下,看起来像是:
"clients" : {
"5gvR1GzT..." : {
"isAdmin" : true
}
},
使用此JSON,然后您只能允许用户使用以下方式将其UID的isAdmin
属性设置为true
时编写产品:
{
"rules": {
"products": {
"$productid": {
".write": "root.child('clients').child(auth.uid).child('isAdmin').val() == true"
}
}
}
}