Nuxt.js аутентификация: перенаправление после входа не выполняется для вложенных маршрутов, только для базовых маршрутов

#authentication #nuxt.js #okta

#аутентификация #nuxt.js #okta

Вопрос:

Я пытаюсь использовать @nuxtjs/auth модуль для аутентификации OAuth2 из Okta в веб-приложении.

Мое приложение имеет структуру URL, подобную: /browse/{folder} для просмотра изображений из определенной папки, где {folder} может быть любая строка текста. Это достигается путем создания представления верхнего уровня с именем browse.vue , папки с именем browse и дочернего компонента в этой папке с именем _folder.vue . Подробнее о вложенных маршрутах смотрите в Nuxt.js более подробная документация здесь.

Снимок экрана 2020-08-25 в 9.53.58 вечера.png

Я добавил защиту аутентификации в _folder.vue файл. Когда я перехожу на /browse , я перенаправляюсь на /login , и отсюда все отлично работает с OAuth2 и Okta. Когда я возвращаюсь в приложение после входа в систему, я возвращаюсь на /browse страницу.

Однако, когда я перехожу в папку, например /browse/Test , я не перенаправляюсь обратно в эту папку после входа в систему. Вместо этого я возвращаюсь к / представлению приложения. Отсюда, если я снова введу путь в адресной строке, я смогу успешно просмотреть его как вошедшего в систему пользователя. Это указывает на то, что вход в систему был успешным, но что-то в перенаправлении не было.

Я заметил, просматривая файлы cookie в инструментах разработчика Firefox, что auth.redirect файл cookie не создается при переходе к /browse/Test , поэтому я думаю, что модуль аутентификации не знает, куда перенаправлять пользователя после входа в систему. Когда я перехожу к /browse , auth.redirect создается файл cookie, и перенаправление выполняется успешно.

Могу ли я что-нибудь сделать, чтобы заставить модуль аутентификации работать для перенаправления на эти динамические маршруты, или это ошибка с модулем? Все остальное в модуле отлично работало в моем приложении.

Моя конфигурация аутентификации в nuxt.config.js , использующая @nuxtjs/auth версию 4.9.1:

   auth: {
    fullPathRedirect:true,
    redirect:{
      callback:"/login",
      logout:"/"
    },
    strategies: {
      social:{
        _scheme: 'oauth2',
        authorization_endpoint: "https://{my-subdomain}.okta.com/oauth2/v1/authorize",
        scope: ['openid', 'profile', 'email'],
        access_token_endpoint: "https://{my-subdomain}.okta.com/oauth2/v1/token",
        response_type: 'id_token',
        token_type: 'Bearer',
        client_id: process.env.CLIENT_ID,
        client_secret:process.env.CLIENT_SECRET,
        token_key: 'id_token'
      }
    }
  }