繁体   English   中英

Firebase规则(权限被拒绝)

[英]Firebase rules (permission denied)

我正在尝试在Firebase中创建一个项目进行练习。 这是我在做什么。 我正在使用电子邮件身份验证,当一个人使用电子邮件和密码注册时,我的应用会获取他的名字,并使用其用户ID添加到Firebase数据库。 这是我设置的Firebase中的数据库

{
"rules": {
"users": {

  "$uid": {
      ".read": "auth != null && auth.uid == $uid",
      ".write": "auth != null && auth.uid == $uid",
    "items": {

      "$item_id": {
        "title": {
          ".validate": "newData.isString() && newData.val().length > 0"
        }
      }
    },
      "user-details":{
        "name" : {
          ".validate" : "newData.isString() && newData.val().length >= 0"
        }
      }
  }
},

"all-public" : {
  ".read" : "true",
    ".write" : "true"
}
  }
}

这是我写的快速代码。

var dbref = FIRDatabase.database().reference()
            dbref.child("users").child("\(user?.uid)").child("user-details").child("name").setValue(name)

            dbref.child("all-public").child((user!.uid)).setValue(name)

已成功将数据添加到第二个子节点all-public,但无法添加上述第一个子节点,并说权限被拒绝。 这就是控制台中的内容。

2017-04-09 20:00:02.145 ToDo App[1573] <Warning> [Firebase/Database][I-RDB03812] setValue: or removeValue: at /users/Optional("klvexHq3GOQ4IiWpOs4WP7H4pmy1")/user-details/name failed: permission_denied
2017-04-09 20:00:28.426 ToDo App[1573] <Warning> [Firebase/Database][I-RDB03812] Listener at /users/klvexHq3GOQ4IiWpOs4WP7H4pmy1/items failed: permission_denied

首先,我认为这是因为我尚未登录。所以我尝试在注册后立即登录,然后将数据添加到数据库中,但仍然是相同的错误。 请帮我解决一下这个。 我真的被困在这里。

由于user是可选的,因此您需要首先提取其值:

var dbref = FIRDatabase.database().reference()
if let uid = user?.uid {
  dbref.child("users").child("\(uid)").child("user-details/name").setValue(name)
  dbref.child("all-public").child((uid)).setValue(name)
}

请参阅Firebase上传文件获取文件名中的可选字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM