В моем приложении Quasar возникла проблема, связанная с обновлением браузера и аутентификацией в firebase.
После того, как пользователь войдет в систему и затем щелкнет по обновлению браузера, firebase.auth (). CurrentUser вернет значение null (поскольку это выполняется асинхронно). Это означает, что при запуске beforeEach значение currentUser равно нулю, и пользователю предлагается страница входа в систему. Однако я вижу, что когда вызывается обратный вызов onAuthStateChanged, пользователь получает правильную настройку.
Существует ли какой-либо шаблон, по которому в приложении Quasar onAuthStateChanged может использоваться в процессе навигации для повторного использования существующего сеанса пользователя?
// Vue-router => index.js
firebase.auth().onAuthStateChanged(user => {
console.log('onAuthStateChanged Invoked => ' + user);
});
router.beforeEach((to, from, next) => {
let currentUser = firebase.auth().currentUser;
let requiresAuth = to.matched.some(record => record.meta.requiresAuth);
if (requiresAuth && !currentUser) {
next('signin');
} else {
if (requiresAuth && currentUser.emailVerified === false) {
next('signin');
} else {
next();
}
}
});