Я использую функцию signInWithEmailAndPassword
Firebase для аутентификации, затем сохраняю access_token в localStorage, чтобы созданный мной геттер Vuex обнаружил, что пользователь вошел в систему, и, наконец, я заставляю маршрутизатор работатьк компоненту Vue, который в маршрутизаторе имеет requiresAuth: true
.
Однако, это не работает, потому что, по-видимому, получатель loggedIn будет изменен только после того, как я обновлю страницу.
Я уже правильно построил свои функции регистрации и выхода из системы, но, похоже, эта функция не работает, несмотря на то, что используется та же структура кода: - вызывать функцию аутентификации firebase; - затем вызывать обещание, которое имеетперенаправление маршрутизатора внутри -Наконец (вне обещания) выполните запрос, если применимо (добавьте пользователя в базу данных при регистрации).
Самое близкое, что я получил, - это использование слегка альтернативной структуры:
login () {
firebase.auth().signInWithEmailAndPassword(this.username, this.password).catch(function(error) {
// Handle Errors here.
alert(error.code);
alert(error.message);
// ...
});
let token = (firebase.auth().currentUser.refreshToken)
localStorage.setItem('access_token', token)
console.log('firebase token: ', token)
this.$router.push({ name: 'home' })
}
Я ожидал бы, что меня перенаправят на компонент, требующий аутентификации.Это делается после того, как я обновляюсь и нажимаю кнопку «Домой» (для этого требуется loggedIn
, чтобы быть правдой).
Как мне заставить его работать без обновления?