Доступ к VuexStore по маршруту beforeEnter - PullRequest
0 голосов
/ 23 сентября 2018

Я хотел бы перенаправить неаутентифицированного пользователя на маршрут '/ login', а авторизованного пользователя - на '/', когда он попытается получить доступ к странице входа в систему.

Когда пользовательЗайдя в систему, я поместил его информацию в магазине, чтобы его можно было легко найти.Когда ни один пользователь не вошел в систему, информация о пользователе, прошедшая проверку подлинности в хранилище, по-прежнему равна нулю.

Итак, в моем beforeEnter моего '/ login' я бы хотел перенаправить его следующим образом: small_smile:

beforeEnter: (to, from, next) => {
    if (store.getters.userAuthenticated != null) {
           next('/')
    } else {
           next()
    }
}

Моя проблема здесь в том, что мой userAuthenticated в геттерах всегда равен нулю, даже если я вошел в систему. Когда я помещаю console.log (store.getters), я вижу фактическую информацию в моих userAuthenticated getter.

enter image description here

Кажется, что данные в beforeEnter не синхронизированы с фактическими данными из хранилища.

Как бы я это сделал?

Большое спасибо!

1 Ответ

0 голосов
/ 05 октября 2018

Вот как ты это делаешь

router.beforeEach((to, from, next) => {
  let nextParams
  let pageRequiresAuth    = to.matched.some(record => record.meta.requiresAuth)
  let userSignedIn        = store.getters['user/signedIn']

  if (pageRequiresAuth) {
    if (!userSignedIn) 
      nextParams = { path: paths.signInPath }  
  } else {
    if (userSignedIn)
      // don't let see auth pages after if user already signed in
      nextParams = { path: paths.afterSignInPath }
  }
  next(nextParams)
})
...