【问题标题】:Access the VuexStore in beforeEnter route在 beforeEnter 路由中访问 VuexStore
【发布时间】:2019-02-27 05:29:33
【问题描述】:

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

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

所以,在我的'/login'之前输入我想像这样重定向他:slight_smile:

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

我的问题是 getter 中的 userAuthenticated 始终为空,即使我已登录。 当我放置一个 console.log(store.getters) 时,我会在我的 userAuthenticated getter 中看到实际信息。

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

我会怎么做?

非常感谢!

【问题讨论】:

    标签: vuejs2 vuex vue-router


    【解决方案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)
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 2019-11-05
      • 2011-03-16
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      相关资源
      最近更新 更多