//route.js
//关键代码 在route跳转之前查询最新用户相关的权限等信息,进行逻辑判断
router.beforeEach((to, from, next) => {
store.commit('setRouterLoading', true)
if (to.name === 'login') {
to.params.redirectRouterName = from.name
next()
return
}
store.dispatch('getCurrentUser').then(() => {
// 未登录,需要登录跳转到登录页面
if (to.meta.requiresAuth && !store.state.isLogin) {
next({
name: 'login'
})
return
}
// 已经登录,查询用户状态
if (store.state.isLogin) {
store.dispatch('getCompanyAuditStatus').then(() => {
next()
})
} else {
next()
}
}).catch(() => {
// 未登录,需要登录跳转到登录页面
if (to.meta.requiresAuth && !store.state.isLogin) {
next({
name: 'login'
})
} else {
next()
}
})
})
store.js
actions: {
// 查询当前登录用户
getCurrentUser ({ commit }) {
return new Promise((resolve, reject) => {
...
resolve()
}, err => {
reject(err)
})
})
},
},
网友评论