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。
我正在尝试实现一项功能,让用户在登录后在其设置页面中更改密码,并且当他们尝试更改密码时,我需要用户的旧密码和新密码作为额外的安全措施。我的问题是我找不到验证用户旧密码是否正确的方法。有没有简单的方法来做到这一点?
我在服务器上收到输入的表单输入,因此解决方案必须在后端 (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。