У меня есть веб-приложение, использующее html - js - css и сервер flask. Мое веб-приложение представляет собой многостраничное приложение, которое, по-видимому, означает, что я должен инициализировать Firebase для каждой страницы, на которой я хочу его использовать. текущий пользователь, поэтому, находясь на моей главной странице, после входа в систему, если я пишу:
const USER = firebase.auth().currentUser;
console.log(USER.uid);
, я получаю свой идентификатор пользователя, как только я перехожу на другую страницу и повторяю приведенный выше код, я получаю ошибка:
TypeError: USER is null
Есть ли способ:
- избегать Инициализации приложения firebase на каждой странице
- сохранить CurrentUser (даже сохранить его) безопасно где-то)
Спасибо
Обходной путь:
Я получил этот обходной путь до ответа Фрэнка, который вероятно, лучший способ продолжить. Вместо этого я просто сохранил идентификатор пользователя в зашифрованной переменной, доступной для всех страниц.
Поскольку главная страница. html всегда загружается, я сохраняю / удаляю переменную в прослушивателе onAuthStateChanged
там, так что скоро когда пользователь выходит из системы, эта переменная удаляется:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
cached_uid = JSON.stringify(user.uid);
cached_uid = btoa(cached_uid);
localStorage.setItem('_uid',cached_uid);
} else {
localStorage.removeItem('_uid');
}
});
, а затем на других страницах:
function loadUID(){
var uid = localStorage.getItem('_uid');
if (!uid) return false;
uid = atob(uid);
uid = JSON.parse(uid);
return uid
}
Я следовал этому, чтобы найти это решение: Как отправить переменные из одного файла в другой в Javascript?