【问题标题】:Firebase Admin SDK - Check user's password against variable on serverFirebase Admin SDK - 根据服务器上的变量检查用户密码
【发布时间】:2021-01-13 13:23:21
【问题描述】:

我正在尝试实现一项功能,让用户在登录时在其设置页面中更改密码,并且当他们尝试更改密码时,我需要用户的旧密码和新密码作为额外的安全措施措施。我的问题是我找不到验证用户旧密码是否正确的方法。有没有简单的方法可以做到这一点?

我在服务器上收到输入的表单输入,因此解决方案必须在后端 (node.js)

非常感谢

【问题讨论】:

    标签: node.js firebase-authentication passwords firebase-admin


    【解决方案1】:

    您必须在客户端进行。这不是 admin SDK 旨在处理的操作。您将向当前用户询问密码并使用它重新进行身份验证,然后更新密码:

    const cred = firebase.auth.EmailAuthProvider.credential(
        firebase.auth().currentUser.email, oldPass);
    firebase.auth().currentUser.reauthenticateWithCredential(cred)
      .then(() => {
        return firebase.auth().currentUser.updatePassword(newPass);
      })
      .catch((error) => {
        // Some error.
      });
    

    【讨论】:

      【解决方案2】:

      虽然公认的解决方案有效,但还有一种方法可以从后端验证用户的密码,使用 the Google Identity Kit REST API's "verifyPassword" endpoint(最近已重命名为“signInWithPassword”,但工作方式完全相同):

      HTTP POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[YOUR_FIREBASE_API_KEY]
      {
        email,
        password,
      }
      

      如果该端点没有返回错误,则表示密码有效。

      更多信息请参见this thread

      【讨论】:

      • 超级有帮助,@Adam!我正在拔头发寻找服务器端解决方案。这对我有用。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 2023-04-09
      • 2018-06-16
      • 1970-01-01
      • 2021-09-25
      • 2021-08-16
      相关资源
      最近更新 更多