我正在使用Firebase实时数据库在不同平台上为我的应用程序实现同步数据库。 我需要一种允许所有人从数据库中读取数据的方法。 只有通过电话号码进行身份验证的用户,并且如果该号码在管理员列表中,就可以写入数据库。我没有找到从数据库规则中的“身份验证”对象获取电话号码的方法。 任何帮助将不胜感激!
这是我现在正在使用的数据库结构和规则。
{
"admins" : {
"+97254000000" : {
"name" : "Pirate Pirate",
...
}
},
"mesages" : {
"msg1" : {
"orderTimestamp" : 1526916646226,
"txt" : "some message"
},
"msg2" : {
"orderTimestamp" : 1526916643522,
"txt" : "some message"
},
"msg3" : {
"orderTimestamp" : 1526916486229,
"txt" : "some message"
}
}
}
// Database Rules
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
答案 0 :(得分:1)
好的。经过几个小时的搜索,我刹了下来喝咖啡,并找到答案:)
Firebase数据库安全规则随附"auth"对象,该对象几乎包含检查用户身份所需的所有内容(电话号码,电子邮件,姓名等)。 因此,我一直在寻找的所有信息都放在"auth.token“部分。
新规则如下:
{
"rules": {
".read": "auth != null",
".write": "root.child('admins').child(auth.token.phone_number).exists()"
}
}