实际情况是这样的
vue3.x vue-router 4.x
以下为路由拦截代码
router.beforeEach((to, from, next) => {
if(to.meta.ignoretoken){
// 如果是登录或者注册 则直接跳转
next()
}else if(localStorage.getItem('token')){
// 如果有token 则跳转对应的页面
next()
}else{
next('/login')
}
})
如果路由不校验token则直接next
如果可以获取到token 则next
如果校验token 但是没有获取到token 则拦截跳转到login页面
到此,逻辑没啥问题
问题出现在,退出之后,到了login页面,点击浏览器的返回,浏览器的地址发生了变化,会进行后退,但是页面因为有拦截,所以页面还是login页面
当前路由回退变为/home 页面是login /xx页面还是login,问题就出现在这个地址栏,因为已经拦截了,再回退,你路由应该还是/login,现在就会造成地址和页面不匹配。
我亲自试了下vue2.x和vue-router3.x 。 没有这个问题。有大神有解决方案的麻烦说一下,万分感激