【发布时间】:2018-01-10 18:43:57
【问题描述】:
在每个应用程序中,我都有一些路线。例如(router/index.js摘录):
[{
path: '/reporting',
name: 'Reporting',
component: reporting,
meta: {
adminOnly: true
}
},
...]
正如您在路由定义中看到的,当访问reporting 时,用户需要具有管理员权限,这是 vuex 存储中的一个属性。问题:这个属性是异步的,当最初在警卫中访问时当然是错误的。我怎样才能让我的守卫等着呢?
后卫:
if (to.matched.some(route => route.meta.adminOnly)) {
if (store.getters.userInfo.isAdmin) {
next()
} else {
next('/')
}
} else {
next()
}
【问题讨论】:
-
您如何以及在何处获取此属性?
-
在 vuex 存储中 init 完成。
-
那么您不应该在该登录操作解决之前启动您的应用程序。当行动返回一个承诺时,你应该很容易。
标签: vue.js state vue-router vuex