我正在尝试使用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.
答案 0 :(得分:1)
在代码中的某处,重定向到"/profile"
后,您将被重定向回"/"
。这就是Vue路由器所抱怨的。
因此问题出在每个动作多次重定向。
您需要确保每个导航操作只有一个重定向。
答案 1 :(得分:0)
通过替换解决的问题
next({ name: "Onboarding" });
使用
router.push({ path: 'Onboarding' });