#authentication #nuxt.js #okta
#аутентификация #nuxt.js #okta
Вопрос:
Я пытаюсь использовать @nuxtjs/auth
модуль для аутентификации OAuth2 из Okta в веб-приложении.
Мое приложение имеет структуру URL, подобную: /browse/{folder}
для просмотра изображений из определенной папки, где {folder}
может быть любая строка текста. Это достигается путем создания представления верхнего уровня с именем browse.vue
, папки с именем browse
и дочернего компонента в этой папке с именем _folder.vue
. Подробнее о вложенных маршрутах смотрите в Nuxt.js более подробная документация здесь.
Я добавил защиту аутентификации в _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'
}
}
}