31

所以,也许我在文档的某个地方错过了这个,但我找不到任何类似的东西。

我不希望我的用户必须输入他们当前的密码才能创建新密码。据我了解,如果用户经过身份验证,他可以在不提供当前密码的情况下更新他的密码。

即使这可能有点安全,我宁愿让他输入他的旧密码,以防止人们进行已经过身份验证的会话,比如家人或其他人,并更改密码。

有没有办法做到这一点?

(我使用 Admin SDK 没有问题,因为我已经为这类事情设置了服务器)

4

1 回答 1

43

更新:(使用 - 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 来执行此操作。我假设您想在允许用户更新它之前验证当前用户的密码。因此,在网络中,您可以执行以下操作:

reauthenticateAndRetrieveDataWithCredential- 已弃用

firebase.auth().currentUser.reauthenticateAndRetrieveDataWithCredential(
  firebase.auth.EmailAuthProvider.credential(
    firebase.auth().currentUser.email, 
    providedPassword
  )
);

如果这成功了,那么你可以打电话

firebase.auth().currentUser.updatePassword(newPassword);
于 2016-12-12T23:15:44.970 回答