search

Home  >  Q&A  >  body text

How to solve Vue Router infinite redirect error

<p>In router.beforeEach, I want to check if the sessionToken already exists in the storage and if not redirect to the login page to get it, but I get the following error: </p> <pre class="brush:php;toolbar:false;">Navigation guard detected infinite redirect when jumping from "/" to "/login". To avoid stack overflow, abort navigation. If not fixed, this will cause problems in production environments. </pre> <p>Code in my router.js: </p> <pre class="lang-js prettyprint-override"><code>router.beforeEach((to, from, next) => { if(ENV == 'development') { let sessionStorage = storage.sessionStorageGet('_sessionToken') if (sessionStorage === null) next({ name: 'Login' }) else next() } }) </code></pre>
P粉403821740P粉403821740460 days ago931

reply all(1)I'll reply

  • P粉529245050

    P粉5292450502023-08-26 11:39:41

    const routes = [
      {
        path: '/login',
        name: 'Login',
        component: () => import('../views/login'),
        meta: {
          requiresAuth: false
        }
      },
      {
        path: '/private',
        ... private route config,
        meta: {
          requiresAuth: true
        }
      }
    ];
    
    router.beforeEach(async (to, from, next) => {
      if (ENV == 'development') {
        
        if (to.matched.some(record => record.meta.requiresAuth)) {
          const sessionStorage = storage.sessionStorageGet('_sessionToken')
      
          if (sessionStorage) {
            next();
          } else {
            router.push({ name: 'Login' });
          }
        } else {
          next();
        }
      }
    });
    

    reply
    0
  • Cancelreply