Vue 之vue-router router.beforeEach導航守衛,陷入死迴圈
阿新 • • 發佈:2019-01-09
官方文件 :https://router.vuejs.org/zh/guide/advanced/navigation-guards.html
判斷瀏覽器快取是否有使用者的資訊,沒有的話跳轉登入頁。
看了官方文件,直接這樣寫了。(試了手動清除快取,再從url裡面跳登入頁,直接陷入了死迴圈)
router.beforeEach((to,from,next)=>{ if(sessionStorage.getItem('loginData')){ Toast('跳轉成功'); next(); }else { //沒有登入,去跳轉登入頁 next({ path:'/login' }); } });
網上找了答案,說是next('/login')自己指定路徑的,路由跳轉的時候還執行一遍beforeEach導航鉤子,所以上面出現死迴圈;
再加個判斷就OK了
router.beforeEach((to,from,next)=>{ // console.log(to); // console.log(from); if(sessionStorage.getItem('loginData')){ Toast('跳轉成功'); next(); }else { //沒有登入,去跳轉登入頁 if(to.path === '/login'){ next(); }else { next({ path:'/login' }); } } });