在实际开发中,假如我们有home、login、list、detail页面。
router.beforeEach(async (to,from,next)=>{
//假设此时用户已经登录并获取到了token并存在store中
//从store中拿到token
const token = store.state.user.token
const name = store.state.user.userInfo.name
if(token){//表示用户已经登录
if(to.path=='/login'){//用户登录了,但想访问登录页面,此时重定向到首页,不让访关
next('/')
}else{
//用户登录了,但要访问非登录页面,此时要看一下有没有用户信息
if(name){
//有用户信息,直接放行
next()
}else{
try{
//没有用户信息,需要dispath来获取用户信息
await store.dispath("getToken")
//获取到了再放行
next()
}catch(){
}
}
}
}else{//用户没有登录
}
})