首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从导航警卫重定向到通过导航警卫

从导航警卫重定向到通过导航警卫
EN

Stack Overflow用户
提问于 2020-08-11 14:45:33
回答 4查看 1.6K关注 0票数 0

我试图使用Vue路由器身份验证保护我的Vue组件。

案例场景:未经身份验证的用户登陆主页("/“路由),他试图访问"/profile",但这是一个私有组件,因此他将被vue路由器重定向到"/ Auth /profile",因此他将身份验证,然后Auth组件将用户重定向到"/profile”组件,因为他在URL中获得了它的路径。

那是我的守卫

代码语言:javascript
复制
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();
  }
});

一切正常工作,但我得到了一个错误,这是令人讨厌的

代码语言:javascript
复制
Redirected when going from "/" to "/profile" via a navigation guard.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-11-30 07:49:52

通过替换来解决问题

代码语言:javascript
复制
 next({ name: "Onboarding" });

使用

代码语言:javascript
复制
router.push({ path: 'Onboarding' });
票数 0
EN

Stack Overflow用户

发布于 2020-09-10 10:07:31

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

因此,问题在于每个动作被重定向多次。

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

票数 2
EN

Stack Overflow用户

发布于 2021-11-25 08:13:35

将vue路由器版本降为3.0.7,或者按照app.jsindex.js中的代码进行操作,其中一个是导入vue-router的示例:

代码语言:javascript
复制
import Vue from 'vue';
import VueRouter from 'vue-router';

const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location, onResolve, onReject) {undefined
if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
return originalPush.call(this, location).catch(err => err)
}

Vue.use(VueRouter);
...

#code
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63360647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档