在通过导航卫士从转到时重定向

时间:2020-08-11 14:45:33

标签: vue-router

我正在尝试使用Vue路由器身份验证保护程序来保护我的Vue组件。
案例场景:未经身份验证的用户登陆首页(“ /”路由),他正尝试访问“ / profile”,但这是一个私有组件,因此vue路由器会将其重定向到“ / auth / profile”,因此他将进行身份验证,然后Auth组件会将用户重定向到“ / profile”组件,因为他在URL中获得了它的路径。

那是我的警卫

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.private)) {
    if (!store.getters.getUser) {
      //console.log("PRIVATE - NOT authenticated");
      next({ path: "/auth" + `${to.path}` });
    } else {
      //console.log("PRIVATE - authenticated");
      next();
    }
  } else {
    //console.log("NOT PRIVATE");
    next();
  }
});

一切正常,但出现错误,很烦人

Redirected when going from "/" to "/profile" via a navigation guard.

2 个答案:

答案 0 :(得分:1)

在代码中的某处,重定向到"/profile"后,您将被重定向回"/"。这就是Vue路由器所抱怨的。

因此问题出在每个动作多次重定向。

您需要确保每个导航操作只有一个重定向。

答案 1 :(得分:0)

通过替换解决的问题

 next({ name: "Onboarding" });

使用

router.push({ path: 'Onboarding' });