Я использую аутентификацию firebase, и моя навигационная панель зависит от того, вошел ли пользователь в систему или нет. Когда я загружаю веб-сайт, если пользователь ранее не выходил из системы, он все равно должен оставаться зарегистрированным. Но Firebase onAuthStateChanged слушатель возвращает пользователя через 100-300 мс, поэтому моя панель навигации не может решить, вошел ли пользователь в систему или нет. navbar показывает кнопку входа и регистрации в течение 300 мс, затем firebase возвращает пользователя, а navbar показывает панель управления и кнопку выхода из системы.
Я использую vue, я пытался сохранить UID и имя пользователя в localalstorage, но я беспокоюсь о безопасности. Что делать, если кто-то вручную изменил данные локального хранилища? Кроме того, пользователь может выйти из системы, но оставаться в системе можно, установив вручную localStorage.setItem ('user', ....)
Navbar.vue
<div v-if="user.uid" class="flex row space-b">
// userpic, photo, logout button
</div>
<div v-else>
// login and signup button
</div>
vuex
state: {
user: {
uid: null,
photoURL: null,
username: null,
},
},
Я пытался не монтировать экземпляр Vue до тех пор, пока слушатель onAuthStateChanged что-то не вернет, но это не может быть хорошим решением, поэтому я рендерил сайт почти на 300 мс позже.