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

Posted

技术标签:

【中文标题】如何从 swift 代码中应用 firebase 数据库安全规则【英文标题】:How to apply firebase database security rules from swift code 【发布时间】:2022-01-03 09:32:41 【问题描述】:

我添加了启用身份验证的 firebase 安全规则。我已经根据密钥授予了写访问权限..

Firebase 规则模板


  "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.

【问题讨论】:

【参考方案1】:

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

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


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

【讨论】:

谢谢.. :) 我刚刚在下面发布了代码。请检查【参考方案2】:

按照弗兰克的建议。

我已经做到了

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)/...
                    
                

【讨论】:

以上是关于如何从 swift 代码中应用 firebase 数据库安全规则的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 中的 url 从 firebase 正确检索数据?

Swift 无法识别 Firebase 用户

如何从 Firebase 数据库中的 autoID 获取价值 - Swift

使用 Swift 3 调试 Firebase

如何对大多数视图使用 Firebase 身份验证的 Swift 应用程序进行单元测试?

如何从Swift中的Cloud FireStore Firebase访问特定字段