vue4.x路由拦截没有token跳转login页面,然后点击浏览器返回,页面还是login页面,但是路由不是login

实际情况是这样的

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 。 没有这个问题。有大神有解决方案的麻烦说一下,万分感激

你可能感兴趣的:(vue4.x路由拦截没有token跳转login页面,然后点击浏览器返回,页面还是login页面,但是路由不是login)