如何验证用户当前密码?
How to verify users current password?
所以,也许我在文档的某处遗漏了这个,但我找不到任何类似的东西。
我不希望我的用户必须输入他们当前的密码才能创建新密码。据我了解,如果用户通过身份验证,他可以在不提供当前密码的情况下更新密码。
即使这可能有点安全,但我宁愿让他输入他的旧版本,以防止人们继续进行已经过身份验证的会话,例如家人或其他人并更改密码。
有什么办法吗?
(我使用 Admin SDK 没问题,因为我已经为这类事情设置了服务器)
更新:(使用 - reauthenticateWithCredential)
var user = firebaseApp.auth().currentUser;
var credential = firebase.auth.EmailAuthProvider.credential(
firebase.auth().currentUser.email,
providedPassword
);
// Prompt the user to re-provide their sign-in credentials
user.reauthenticateWithCredential(credential).then(function() {
// User re-authenticated.
}).catch(function(error) {
// An error happened.
});
之前的版本
您可以使用重新验证 API 来这样做。我假设您想在允许用户更新密码之前验证当前用户的密码。所以在 web 中,您可以执行以下操作:
reauthenticateAndRetrieveDataWithCredential
- DEPRECATED
firebase.auth().currentUser.reauthenticateAndRetrieveDataWithCredential(
firebase.auth.EmailAuthProvider.credential(
firebase.auth().currentUser.email,
providedPassword
)
);
如果成功,那么你可以调用
firebase.auth().currentUser.updatePassword(newPassword);
所以,也许我在文档的某处遗漏了这个,但我找不到任何类似的东西。
我不希望我的用户必须输入他们当前的密码才能创建新密码。据我了解,如果用户通过身份验证,他可以在不提供当前密码的情况下更新密码。
即使这可能有点安全,但我宁愿让他输入他的旧版本,以防止人们继续进行已经过身份验证的会话,例如家人或其他人并更改密码。
有什么办法吗?
(我使用 Admin SDK 没问题,因为我已经为这类事情设置了服务器)
更新:(使用 - reauthenticateWithCredential)
var user = firebaseApp.auth().currentUser;
var credential = firebase.auth.EmailAuthProvider.credential(
firebase.auth().currentUser.email,
providedPassword
);
// Prompt the user to re-provide their sign-in credentials
user.reauthenticateWithCredential(credential).then(function() {
// User re-authenticated.
}).catch(function(error) {
// An error happened.
});
之前的版本
您可以使用重新验证 API 来这样做。我假设您想在允许用户更新密码之前验证当前用户的密码。所以在 web 中,您可以执行以下操作:
reauthenticateAndRetrieveDataWithCredential
- DEPRECATED
firebase.auth().currentUser.reauthenticateAndRetrieveDataWithCredential(
firebase.auth.EmailAuthProvider.credential(
firebase.auth().currentUser.email,
providedPassword
)
);
如果成功,那么你可以调用
firebase.auth().currentUser.updatePassword(newPassword);