#javascript #reactjs #firebase #firebase-authentication
# #javascript #reactjs #firebase #firebase-аутентификация
Вопрос:
Большое спасибо за чтение вопроса этого новичка.
Итак, есть приложение ReactJS, которое использует firebase для своей аутентификации.
Каждый раз, когда страница обновляется, пользователь исчезает навсегда, пока вы не войдете в систему с перенаправленной страницы входа.
Что было сделано до сих пор?
Что ж, после тщательного изучения всех возможных ответов Stackoverflows, дающих безупречные ответы, было выполнено следующее:
- Реализована функция onAuthStateChanged(), как показано ниже:
firebase.auth().onAuthStateChanged((user) => {
if (user) {
console.log('user is logged in');
} else {
console.log('user is logged out now')
}
});
- Установите постоянство, которое, по-видимому, является тихим рабочим, следующим образом:
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.NONE)
.then(function () {
console.log("successfully set the persistence");
})
.catch(function (error) {
console.log("failed to ser persistence: " error.message)
});
Каждая перезагрузка страницы выводит пользователя из системы просто так.
Пропал!.
Ничего. Даже следов его пыли!
Чтобы лучше понять этот вредный код, я могу предоставить вам следующие скриншоты сообщений консоли.
Вы получаете это при входе в систему
И следующее, когда страница обновляется.
Как вы думаете, почему эта ошибка появляется даже после применения вышеуказанного?
Еще раз спасибо!
Update1: убрал setPersistence. И оказывается, что пользователь входит в систему даже после перезагрузки страницы для входа в систему.
Обновление 2: пользователь фактически удаляется при обновлении страницы. Теперь это то, что нам нужно решить здесь. Что вы, ребята, думаете?
Ответ №1:
Firebase Auth SDK включает сохранение по умолчанию. Если вам нужно такое поведение по умолчанию, не вызывайте firebase.auth().setPersistence()
вообще. Просто используйте onAuthStateChanged
, чтобы узнать, когда сохраненный пользовательский объект будет доступен первым.
Комментарии:
1. Привет, Даг!, спасибо за ваш ответ. Я попробую это и посмотрю, как это получится
2. Итак, я записываю эту строку. По-прежнему преобладает вышеупомянутая ошибка. Теперь при обновлении отображается только сообщение «пользователь вошел в систему».
3. Какая ошибка? Здесь вы не показываете ошибок.
4. Ошибка. Не ошибка. Просто, что ничего не улучшилось, выполнив вышеуказанное.
5. Если у вас есть другой вопрос, пожалуйста, опубликуйте его отдельно вместе с соответствующим кодом, который работает не так, как вы ожидаете. В этом вопросе должно быть достаточно информации, чтобы любой мог повторить поведение.