После развертывания Nuxt приложения, сайт падает с ошибкой redirected you too many times

Развернул приложение Nuxt(SSR) на хостинге Firebase( + Cloud Run). Cначала все работает и промеж. ПО отрабатывает корректно, но в какой-то момент(при перезагрузке страницы например) сайт падает с ошибкой redirected you too many times, в нетворке вижу постоянный редирект с 'name-site.web.app' на '/login' и обратно. Локально после сборки проекта все работает нормально.

В своем приложении использую vuex (токен храню в куках __session).

nuxt-config.js:

...
 router: {
    middleware: 'router-auth'
  }
...

middleware/router-auth.js:

export default function({ store, redirect, route }) {
  const isAuthenticated = !!store.state.auth.user

  if (isAuthenticated && route.name == 'login') {
    return redirect('/')
  }

  if (!isAuthenticated && isSecureRoute(route)) {
    return redirect('/login')
  }

  return
}

function isSecureRoute(route) {
  if (route.name == 'admin' || route.name == 'settings' || route.name == 'index') {
    return true
  }
  return false
}

component auth form:

 ... 
 this.$store.dispatch('auth/login',
   {  login: this.login,
      password: this.password
   }).then(() => {
      this.$router.push('/')
   })

Не могу понять где ошибка, причем такое поведение заметил только после того как развернул на хостинге и в разный момент может произойти.

UPDATE: Интересный момент. Проблема случается только при перезагрузки домашней страницы(index.vue: '/'), когда ошибка повторилась и происходит редирект, на другие страницы сайта зайти можно без проблем. Причем по внутренним маршрутам(nuxt-link) можно даже на домашнюю страницу зайти, но при ее перезагрузки возможен опять цикл редиректов.


Ответы (2 шт):

Автор решения: kost1k

На сколько помню, при развертывании хостинга на Firebase спрашивается, будет ли ваше приложение работать как SPA, в таком случае со всех страниц устанавливается редирект в корень сайта к индексному файлу.

Тогда получается, что при переходе по ссылкам внутри сайта, странички подгружаются при помощи роутера и все работает нормально. Когда мы переходим на сайт по прямой ссылке или перезагружаем страницу, то сначала происходит редирект на главную, а там уже опять средствами роутера подгружается нужная страница.

В данном случае, мы редиректим не авторизованного пользователя на страницу '/login', а сам сайт при обращении к данной странице редиректит нас на главную '/', вот и получается зацикливание. Думаю стоит убрать редирект из middleware и реализовать его также средствами роутера, тогда все будет работать корректно.

→ Ссылка
Автор решения: Odyssey

Поддержка firebase не особо помогла, поэтому решил изменить структуру сайта. Добавил папку pages/secure и разместил там свои страницы, требующие авторизации. Добавил отдельную домашнюю страницу index.vue, соответственно изменил промежуточное ПО. Проблема ушла.

middleware:

  export default function({ store, redirect, route }) {
  const isAuthenticated = !!store.state.auth.user

  if (isAuthenticated && route.path === '/login') {
    return redirect('/secure/')
  }

  if (!isAuthenticated && isSecureRoute(route)) {
    return redirect('/login')
  }
}

function isSecureRoute(route) {
  if (/^\/secure(\/|$)/.test(route.fullPath)) {
    return true
  }
  return false
}
→ Ссылка