【问题标题】:How to make multiple calls to the Firebase more secure? - swift如何更安全地多次调用 Firebase? - 迅速
【发布时间】:2020-09-10 13:42:59
【问题描述】:

所以我的应用中有一个“删除帐户”按钮,当用户点击它时,它会删除 Auth 帐户以及其他 3 个 Firestore 文档。我很担心一个功能可能会成功,而其他功能可能会失败。如何确保如果一个功能失败,则所有功能都失败?

    func deleteUser () {
        let currentUser = Auth.auth().currentUser

        Auth.auth().currentUser?.delete(completion: { (error) in
            if error != nil { return }
            else {
                Firestore.firestore().collection("Users").document(currentUser!.uid).delete { (error) in
                    if error != nil { return }
                    else {
                        Firestore.firestore().collection("Posts").document(currentUser!.uid).delete { (error) in
                            if error != nil { return }
                            else {
                                transitionToHomeScreen()
                            }
                        }
                    }
                }
            }
        })
    }

【问题讨论】:

    标签: swift firebase google-cloud-firestore firebase-authentication


    【解决方案1】:

    首先,您可能应该在删除用户之前删除文档。如果您先删除用户,则用户可能会失去删除其文档的能力,具体取决于您的安全规则所允许的范围。

    其次,无法确保 Firebase Auth 和 Firestore 之间的事务一致性(也没有任何两个 Firebase 产品之间)。如果 Firestore 中出现故障,则无法自动回滚对 Auth 的更改,反之亦然。如果您需要回滚更改,则必须为此编写代码。

    如果要确保同时删除多个文档,则应使用transaction or batch write 以确保同时删除所有文档或不一起删除文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 2018-04-08
      • 2018-01-17
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多