死循环版本(错误示例):
router.beforeEach((to, from, next) => {
if(localStorage.getItem("token-xsm") != null) {
next();
}else {
next('/login')
}
})
正确版本:
router.beforeEach((to, from, next) => {
if(localStorage.getItem("token-xsm") != null) {
next();
}else {
if(to.path == '/login'){
next()
}
else{
next('/login')
}
}
})
总结: 首先要明白beforeEach这个函数的运行机制,“在每次访问路由跳转的时候都要执行这个钩子函数”,所以 当token不存在时 要跳转到登录页面,但是在重定向登录页面之前也要执行这个钩子函数,所以要判断是否访问登录页面,放行这个路由