在实现权限拦截控制功能的时候报错,原因:路由放行的时候登录和注册页面没有判断成功,导致一直在重复的跳转。
具体逻辑功能实现如下图:
const whiteList = ['/login', '/reg'] // 白名单(无需登录可以访问的路由地址)
// 全局前置路由守卫
// next()如果切换路由地址, 会再次走路由守卫再次去匹配路由表
router.beforeEach((to, from, next) => {
const token = store.state.token
if (token) {
// 如果有token, 证明已登录
if (!store.state.userInfor.username) {
// 有token但是没有用户信息, 才去请求用户信息保存到vuex里
// 调用actions里方法请求数据
store.dispatch('initUserInfo')
// 下次切换页面vuex里有用户信息数据就不会重复请求用户信息
}
next() // 路由放行
} else {
// 如果无token
// 如果去的是白名单页面, 则放行
if (whiteList.includes(to.path)) {
next()
} else {
// 如果其他页面请强制拦截并跳转到登录页面
next('/login')
}
}
})