手动输入时 Vue2 路由器不起作用

Vue2 router do not work when type manually

我有这样的代码:

created: function() {
    if(!localStorage.hasOwnProperty('auth_token')) {
        router.replace({name: 'login'});
    } else {
         if(router.history.current.name == 'login') {
             router.push({name: 'allVideos'});
         }
    }
}

在我的 Vue 根实例中。

因此,当页面加载时,它会检查令牌。当我没有令牌时,我将重定向到登录页面。如果我在登录页面上有令牌重定向到 allVideos,或者在其他页面上根本不重定向。

当我进行刷新时一切正常,通过一些按钮等。但是当我手动输入 /#/login 并按回车键时,Vue 呈现登录页面但 auth_token 存在。当我手动输入时,它根本不会进入 created 方法。当我再次从登录页面再次键入 /#/login 时,它开始工作...。有什么想法吗???谢谢

更新:好吧,我尝试使用导航守卫

router.beforeEach((to, from, next) => {
    if(localStorage.hasOwnProperty('auth_token')) {
        if(to.name == 'login') {
            next({name: 'allVideos'});
        }
    } else {
        if(to.name != 'login') {
            next({path: '/login'});
        }
    }
        next();

});

代码现在对我来说更清晰了,但是当我手动输入时问题仍然存在

在您的代码中,next() 被调用了 2 次,因此产生了问题。你可以试试这个代码:

router.beforeEach((to, from, next) => {
  if(localStorage.hasOwnProperty('auth_token')) {
    if(to.name === 'login') {
      next({name: 'allVideos'});
    }
  } else if(to.name !== 'login') {
    next({path: '/login'})
  } else {
    next();
  }
});