【问题标题】:Firebase Database throws error: "permission_denied" / Swift / Firebase DatabaseFirebase 数据库抛出错误:“permission_denied”/Swift/Firebase 数据库
【发布时间】:2021-04-08 22:22:55
【问题描述】:

这是控制台中的错误:

[Firebase/Database][I-RDB038012] setValue: or removeValue: at /users/lKW2MLmXvCbyku4teSwSMS9Snwq2 failed: permission_denied

当我运行这段代码时:

 Auth.auth().createUser(withEmail: eMailTextField.text!, password: passwordTextField.text!) { (data, error) in
            if let err = error {
                print(err.localizedDescription)
                return
            }
            
            guard let newUser = data?.user else { return }
            let uid = newUser.uid
            print("User: \(String(describing: newUser.email)) wurde erstellt, ID: \(String(describing: newUser.uid))")
            
            //Database
            
            let ref = Database.database().reference().child("users").child(uid)
            print("Datenbank ID: \(ref)")
           
            ref.setValue(["fullname" : self.fullNameTextField.text!, "username": self.usernameTextField.text!, "email" : self.eMailTextField.text!])

有人可以帮助我吗? :)

【问题讨论】:

  • 您还可以从 Firebase 控制台添加您的数据库权限吗?

标签: swift firebase firebase-realtime-database


【解决方案1】:

错误消息表明用户无权写入数据库中的该位置。对数据库的访问由 Firebase 的服务器端安全规则控制,您需要授予用户所需的权限。

请参阅 security rules 上的 Firebase 文档。

允许此写入操作的最小更改为:

{
  "rules": {
    "users": {
      "lKW2MLmXvCbyku4teSwSMS9Snwq2": {
        ".write": true
      }
    }
  }
}

虽然您更可能希望用户能够编写自己的节点,但应该是:

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "auth.uid === $uid"
      }
    }
  }
}

有关后者的更多信息,请参阅content owner only access 上的文档。

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2023-03-04
    • 2018-04-18
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2016-10-17
    • 2017-01-22
    相关资源
    最近更新 更多