如何从 swift 代码应用 firebase 数据库安全规则

How to apply firebase database security rules from swift code

我添加了 Firebase 安全规则并启用了身份验证。我已根据密钥授予写入权限..

Firebase rules templet

{
  "rules": {
    "users": {
        ".write": "auth.uid == \"jack\""
    }
  }
}

现在我希望在 swift 代码中添加该规则

  var ref: DatabaseReference!
  ref = Database.database().reference()

Setting data as

ref.child("users/jack").setValue("jack")..// Something here to change.

您无法通过 Swift 代码设置用户的 UID。毕竟,如果你能做到这一点,任何人都可以通过获取你的配置数据和 运行 他们想要的任何代码来对付你的数据库来做到这一点。

为用户设置 UID 的唯一方法是 create a custom authentication provider,这只能在受信任的环境中完成,例如您的开发机器、您控制的服务器或 Cloud Functions。


要保护您的数据库,请在您的 Swift 代码中登录 Firebase 身份验证(例如使用 anonymous authentication),然后记录 UID,并使用它代替 jack在您的安全规则中。

根据弗兰克的建议。

我已经做到了

pod 'Firebase/Auth'

 import FirebaseAuth

   Auth.auth().signInAnonymously { authDataResult, errorObj in
   if let error = errorObj {
          print("Sign in failed:", error.localizedDescription)
   } else {
     guard let userIdRecieved = authDataResult?.user.uid else {return}
            ref.child("users/\(userIdRecieved)/...