@700Hp

Router не видит изменения состояния isAuth, как отследить?

Код роутера
router.beforeEach((to, from, next) => {
  const requireAuth = to.meta.auth

  if (requireAuth && store.getters['auth/isAuthenticated']) {
    next()
  } else if (requireAuth && !store.getters['auth/isAuthenticated']) {
    next({name: 'login'})
  } else if (!requireAuth && store.getters['auth/isAuthenticated']) {
    next({name: 'admin'})
  } else {
    next()
  }
})


Код состояния
state() {
    return {
      isAuth: false,
      user: null,
      emailFormFactor: ''
    }
  },
 getters: {
    isAuthenticated(state) {
      return state.isAuth
    },
    getEmailFormFactor(state) {
      return state.emailFormFactor
    },
    getUser(state) {
      return state.user
    }
  }


Код главного App.vue
onBeforeMount(
      () => {
        if (localStorage.getItem('auth-token')) {
          store.dispatch('auth/checkAuth')
        }
      }
    )


Не могу отследить изменение при обновлении токена.
Получать сразу элемент из local storage в isAuth не вариант, т.к прежде выполняется проверка на валидность токена.
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@700Hp Автор вопроса
Моим решением на данный момент является повторный запрос на сервер в router.beforeEach, если падает 401 статус, то он разого делает перевызов, и либо подгружает уже как авторизованный. Или как неавторизованный.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы