// 全局前置路由守卫
/**
* 是否登录了
* 登录了
* 去的是否是登录页面
* **** 是的 则转到系统首页 ---- 都登录过了 还去登录干啥
* **** 不是去的登录页 放行去登录页
*/
/**
* 未登录
* 去的是否是白名单 ? 白名单就是未登录的情况下 你可以访问哪些界面 【登录页面 404页面】
* **** 在白名单 放行
* **** 不在白名单 非法访问 拦截去登录页面
*/
// 导航守卫的逻辑
router.beforeEach(async (to, from, next) => {
console.log(getToken()) // undefined
if (getToken()) {
console.log('登录了')
// 去的是否是登录页
if (to.path === '/login') {
// console.log('去的是登录页,登录了去的还是登录页 重复了 去系统首页')
next('/')
} else {
// console.log('去的不是登录页,放行 该去哪就去哪,没有限制了')
// 登录了 跳转的是系统页 layout 就获取用户资料
console.log('vuex的监视属性 userId')
// console.log(store.state.userInfo)
// await store.dispatch('getUserProfileAction')
// console.log(store.state.userInfo)
// console.log(store.getters.userId) // undefined
// 为什么使用你 getters ??? 老师要使用的
// if (!store.getters.userId) {
// console.log('获取用户资料')
// // 调用 vuex 的action的方法 然后在 actions 中再次调用 mutations的方法
// // ps:使用了await 则此函数前面要使用 async
// // await store.dispatch('getUserProfileAction')
// }
next()
}
next()
} else {
console.log('未登录')
// // 去的是否是白色名单 白名单数组
// 没有登录的状态下只能去这 2 个页面
const whiteList = ['/404', '/login']
if (whiteList.includes(to.path)) {
// console.log('包含白色名单')
// 放行
next()
} else {
// 不在白色名单 就是非法访问了 拦截去登录页面
next('/login')
}
// next()
}
})