如何使用firebase Auth重置密码在firebase数据库中重置密码邮件

时间:2017-10-26 13:57:36

标签: ios swift firebase firebase-authentication

我实际上在Swift中开发了一个使用Firebase作为在线数据库的iOS应用程序。 所以概念是:用户可以使用firebase Authentification电子邮件和密码注册,然后我在数据库中写入电子邮件和密码。 但是现在,我想用Firebase Auth发送密码重置来实现重置邮件密码。 这个功能工作得很好,但我也想更新数据库中的密码。 我不知道这样做。 这是我的代码:

@IBOutlet weak var txt_mail: UITextField!
 Auth.auth().sendPasswordReset(withEmail: txt_mail.text!) { (error) in
            let alertController = UIAlertController(title: "Error", message: error?.localizedDescription, preferredStyle: .alert)
            let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
            alertController.addAction(defaultAction)
            self.present(alertController, animated: true, completion: nil)
        }

此代码向用户发送重置电子邮件,用户将通过邮件发送给他的链接更改密码,如何恢复密码?

1 个答案:

答案 0 :(得分:0)

首先,为什么要存储用户密码?你用纯文本存储它们吗?这当然不安全,我建议你不要这样做。

Firebase 不会存储用户密码。它存储密码的哈希值。这是存储密码的正确方法,无法转换为纯文本。此外,没有用于获取用户密码的API。这也是出于安全考虑。

如果您不想听。那么你只有一个潜在的选择。您可以使用changePasswordForUser()来更新应用中的密码。然而,这需要 用户知道他们当前的密码。重置不知道的密码的唯一方法是使用resetPasswordForUser()

但是,由于您已将密码保存在数据库中,因此您可以设计一种解决方法,使用该密码对用户进行身份验证,然后更新其密码,或者您可以要求用户在下次登录时更新其密码更新密码后(您可以使用更新的密码对其进行重新验证,以确保其准确无误)。我再次建议这样做。

请查看这些链接以获取更多信息:

How to get an authenticated users password and email

Manage Users in Firebase

How to verify users current password?