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

6 passwords node.js firebase-authentication firebase-admin

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

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

非常感谢

Ada*_*dam 7

尽管已接受的解决方案有效,但还有一种方法可以使用Google Identity Kit REST API 的“verifyPassword”端点(最近已重命名为“signInWithPassword”,但工作原理完全相同)从后端验证用户密码:

HTTP POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[YOUR_FIREBASE_API_KEY]
{
  email,
  password,
}
Run Code Online (Sandbox Code Playgroud)

如果该端点没有返回错误,则意味着密码有效。

请参阅本主题以获取更多信息。

  • 超级有帮助,@Adam!我正在绞尽脑汁寻找服务器端解决方案。这对我有用。谢谢你! (2认同)

boj*_*eil 5

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