Я использую Laravel в качестве внутреннего сервера и Vue для внешнего интерфейса моего приложения. Теперь у меня проблема с выходом из приложения. Я создал маршрут в Vue следующим образом:
import { RouteConfig } from 'vue-router';
import store from '@/store';
const routes: Array<RouteConfig> = [
{
path: '/logout',
name: 'Logout',
beforeEnter: (to, from, next) => {
store.dispatch('login/logout');
next('/login');
},
},
];
export default routes;
, а в магазине у меня есть следующее действие для фактического выхода из системы:
import { Commit, GetterTree } from 'vuex';
import userClient from '@/modules/core/api/userClient';
import { LoginState } from './types';
const namespaced = true;
const state: LoginState = {
userToken: null,
user: {},
role: {},
authentication: {},
};
const getters: GetterTree<LoginState, any> = {};
const actions = {
async logout({ commit }: { commit: Commit }) {
await userClient.logout();
commit('clearUser');
},
};
const mutations = {
clearUser(state: any) {
state.userToken = null;
state.user = null;
state.role = null;
state.authentication = null;
},
};
export default {
namespaced,
state,
getters,
actions,
mutations,
};
Бэкэнд Laravel затем уничтожает Cook ie, в котором хранится JWT.
Теперь, когда я перехожу к маршруту /logout
через this.$router.push('/logout')
, я получаю следующую ошибку в браузере:
vue-router.esm.js?8c4f:2062 Uncaught (in promise) Error: Redirected when going from "/home" to "/login" via a navigation guard.
Может ли кто-нибудь помочь мне решить эту проблему?