Я использую Vue + Vuex , чтобы удалить токен пользователя из localStorage , чтобы сделать выход пользователя из системы и перенаправить его на страницу входа.
КомпонентКод выхода из системы:
methods: {
logout () {
this.$store.dispatch('logout')
.then(response => {
this.$router.push({ name: 'login'});
}).catch((e) => {
console.log(e);
});
}
}
Код действия магазина:
logout({commit}) {
return new Promise((resolve, reject) => {
try {
commit('logout');
resolve("done");
} catch (e) {
reject(e);
}
});
}
Функция сохранения мутации:
logout (state) {
localStorage.removeItem('user');
state.is_logged_in = false;
state.user = null;
}
Проблема:
Что происходит:
- Перенаправление пользователя на страницу входа.
- Перенаправление пользователя обратно на панель управления.
- Маркер доступа пользователя удален.
Таким образом, пользователь остается на той же странице.
Это означает:
Метод action отправляется, затем возвращается к методу выхода из компонента, а затем фиксирует мутацию.