Firebase Admin SDK - 根据服务器上的变量检查用户密码

Firebase Admin SDK - Check user's password against variable on server

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

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

非常感谢

你必须在客户端进行。这不是管理 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.
  });

虽然公认的解决方案有效,但还有一种方法可以从后端验证用户密码,使用 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,
}

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

有关详细信息,请参阅 this thread