只允许管理员写入数据-Firebase实时数据库-安全规则



我只想将.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"
}
}
}
}

相关内容

  • 没有找到相关文章

最新更新