vuejs2 - 在 beforeEnter 路由中访问 VuexStore
问题描述
我想将未经身份验证的用户重定向到“/ login”路由,当他尝试访问登录页面时,将身份验证用户重定向到“/”。
当用户登录时,我将他的信息放在商店中以便于检索。当没有用户登录时,商店上的用户认证信息仍然为空。
因此,在我的“/登录”的 beforeEnter 中,我想像这样重定向他:slight_smile:
beforeEnter: (to, from, next) => {
if (store.getters.userAuthenticated != null) {
next('/')
} else {
next()
}
}
我的问题是 getter 中的 userAuthenticated 始终为空,即使我已登录。当我放置 console.log(store.getters) 时,我会在 userAuthenticated getter 中看到实际信息。
beforeEnter 中的数据似乎与商店中的实际数据不同步。
我会怎么做?
非常感谢 !
解决方案
你就是这样做的
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)
})
推荐阅读
- docker - Dockerfile 在几个环境中部署 Vue.js 应用程序?
- azure-application-gateway - Azure sql server 作为应用网关的后端池
- excel - excel表格数据复制和粘贴,而列标题计数不同
- java - 在spark sql中使用count、have和orderby执行本机sql
- cisco - 如何将一台 ping 电脑发送到另一台位于不同网络中的电脑
- python - 如何将多个图像放入数组中?
- sftp - 无法使用带有 Atmoz/SFTP (SSH) 的 ARM 模板挂载 /home 目录
- azure-devops - 跨 Epics 链接(或相关)的 DevOps 功能
- python - 识别直方图中的分布
- swift - 使用 .grouped tableview 时,摆脱在我的标题中添加的空间