从其他路径引用子名称验证

时间:2017-07-18 09:12:26

标签: firebase firebase-realtime-database firebase-security

我有一个这样的数据库:

"users": {
    "gh483cwonaz8o3mff3": {
        "nick": "mutlu",
        "birthyear": "1996"
    }
}

"nicks" : {
    "mutlu": {
        "uid": "gh483cwonaz8o3mff3"
    }

}

第一个写入数据库的数据是"用户"。而不是" nicks"。但是" mutlu" in" nicks"应与"用户> gh483cwonaz8o3mff3> nick"相同值。 如何确定数据的安全规则将写入" nicks"。 我试过这个,但没有奏效:

"nicks": {

        ".write": "auth.token.email_verified == true &&  newData.hasChild(root.child('users').child(auth.uid).child('username').val())"

    }

enter image description here enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

您在规则中构建的路径与您共享的JSON中的结构不匹配。 我认为写昵称的安全规则应该是:

{
  "rules": {
    "nicks": {
      "$nick": {
        ".write": "auth.token.email_verified == true &&
          root.child('users').child(auth.uid).child('nick').val()) == $nick"

通过将JSON /路径保持在规则旁边来捕捉此类错误最容易:"users": { "gh483cwonaz8o3mff3": { "nick": "mutlu",