Как вариант сделать поинт для получения данных сессии
GET /auth
бек будет отдавать данные, если есть сессия или возвращать ошибку 401 если пользователь неавторизован. В сторе vue создайте модуль user:
export default {
state: {
user: null,
},
getters: {
isAuthenticated: ({ user }) => Boolean(user),
},
actions: {
getUser({ commit, dispatch }) {
return this.$axios.get('/auth')
.then(user => commit('setUser', user))
.catch(() => dispatch('logout'));
},
login({ dispatch }, { email, password }) {
return this.$axios.post('/login', {
email, password,
})
.then(() => dispatch('getUser'));
},
logout({ commit }) {
commit('unsetUser');
},
},
mutations: {
setUser(state, user) {
state.user = user;
},
unsetUser(state) {
state.user = null;
},
},
};
При старте приложения вызываем
getUser
, если есть сессия показываем что-то в противном случае форму авторизации, еще в корне приложения можно подписаться на ошибки стора
this.$store.subscribeAction
и ловить 401, чтобы сделать logout