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')
    }
  }
})