router.beforeEach((to,from,next)=>{
let token=localStorage.getItem("token")
if(token){
next({name:'layout'})
}else{
next('/login')
}
})
在用路由拦截写登录验证时,发现这种写法有一个问题,即这种写法会出现一个问题就是超出最大调用堆栈,当没有token时会进入login,然后就又会进入全局前置守卫,然后还是没有token就会再次进入login,就会进入死循环,解决办法是通过to.fullpath判断它是否进入登录页面,是的话就直接放行,否则再判断是否携token
解决办法
if(to.fullPath ==='/login'){
next()
}else{
if(token){
next()
}else{
next('/login')
}
}
})