Как проверить текущий пароль пользователя?

Так что, возможно, я пропустил это где-то в документах, но я не мог найти ничего подобного.

Я не хочу, чтобы мои пользователи вводили свой текущий пароль, чтобы иметь возможность создать новый. Насколько я понимаю, если пользователь аутентифицирован, он может обновить свой пароль, не предоставляя свой текущий.

Даже если это может быть несколько безопасным, я бы предпочел, чтобы он набрал свой старый, чтобы люди не могли участвовать в уже аутентифицированных сеансах, скажем, членов семьи или около того, и менять pw.

Есть какой-либо способ сделать это?

(У меня нет проблем с использованием Admin SDK, так как я уже настроил сервер для таких вещей)


person ThatBrianDude    schedule 12.12.2016    source источник
comment
Обычно вы применяете это поведение в коде. Вы разрешаете пользователям доступ к консоли? Какова ваша кодовая база?   -  person Jay    schedule 12.12.2016
comment
Насколько я знаю, firebase не предоставит мне пароль пользователя, что понятно, мне просто нужна проверка. Нет, у моих пользователей есть только электронная почта/пароль, и они обычно аутентифицируют себя с помощью метода firebase signInWithEmailAndPassword(). Я использую Node на стороне сервера и реагирую на стороне клиента, если это имеет значение.   -  person ThatBrianDude    schedule 13.12.2016


Ответы (1)


ОБНОВЛЕНИЕ: (Используйте - повторно аутентифицироватьWithCredential)

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);
person bojeil    schedule 12.12.2016
comment
firebase.User.prototype.reauthenticate был удален в пользу firebase.User.prototype.reauthenticateWithCredential. Так что используйте reauthenticateWithCredential - person Shyam; 20.09.2017
comment
Так приятно копировать и вставлять такой фрагмент... Спасибо :) - person Jeremy Belolo; 28.12.2018
comment
reauthenticateAndRetrieveDataWithCredential теперь устарела. Используйте повторную аутентификациюWithCredential - person alaswer; 08.04.2020
comment
Что делать, если учетная запись заблокирована из-за слишком большого количества неправильных попыток? И пользователь больше не может войти в ваше приложение только потому, что хотел сменить пароль - person Tom3652; 23.11.2020