У меня есть приложение SPA на Vue.js + Laravel. Логика авторизации, полностью делегированная приложению Laravel. Тем не менее, мне нужно проверить статус авторизации при изменении маршрутизации. Я создаю небольшой класс, который отвечает за него.Как сделать задержку, когда пользователь проверяет Vue.js?
export default {
user: {
authenticated : false
},
check: function(context) {
context.$http.get('/api/v1/user').then((response) => {
if (response.body.user != null) {
this.user.authenticated = true
}
}, (response) =>{
console.log(response)
});
}
Внутри компонента есть метод, который вызывается при изменении URL-адреса.
beforeRouteEnter (to, from, next) {
next(vm =>{
Auth.check(vm);
if (!Auth.user.authenticated) {
next({path:'/login'});
}
})
}
Функция next()
данный Вью экземпляр приложения, а затем проверить объект пользователя. Если пользователь false, next()
снова вызовет перенаправление на страницу входа. Все это работает, но только когда страница уже загружена. Если я перезагружу/страницу учетной записи, есть страница переадресации на/login, потому что запрос Api еще не завершен, но код продолжит выполнение. Есть идеи?
Ничего себе, это решение так же, как мое: D Спасибо за ответ и советы –
ПОЗДРАВЛЯЕТ для выяснения правильного решения самостоятельно, то ;) – damienix