提问者:小点点

在beforeEnter路由中访问VuexStore


我想将未经身份验证的用户重定向到“/login”路由,并在身份验证用户尝试访问登录页面时将其重定向到“/”。

当用户登录时,我把他的信息放在商店上以便于检索。当没有用户登录时,商店上的用户认证信息仍然为空。

所以,在我的/login的beforeEnter中,我想像这样重定向他:slight_smile:

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

我在这里的问题是我的userAuthenticated在getter中始终为null,即使我已登录。当我放置控制台. log(store.getters)时,我在userAuthenticated getter中看到了实际信息。

似乎beforeEnter中的数据与存储中的实际数据不同步。

我该怎么做?

非常感谢!


共1个答案

匿名用户

你就是这么做的

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)
})