Firebase数据库规则。通过电话号码限制写访问权限

时间:2018-07-13 18:10:59

标签: firebase firebase-realtime-database rules

我正在使用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"
  }
}

1 个答案:

答案 0 :(得分:1)

好的。经过几个小时的搜索,我刹了下来喝咖啡,并找到答案:)

Firebase数据库安全规则随附"auth"对象,该对象几乎包含检查用户身份所需的所有内容(电话号码,电子邮件,姓名等)。 因此,我一直在寻找的所有信息都放在"auth.token“部分。

新规则如下:

{
  "rules": {
    ".read": "auth != null",
    ".write": "root.child('admins').child(auth.token.phone_number).exists()"      
  }
}