Получение ошибки «не аутентифицировано» в Nuxt.js промежуточное программное обеспечение с SSR и усилением

#nuxt.js #server-side-rendering #amplify

#nuxt.js #рендеринг на стороне сервера #усиление

Вопрос:

Я хотел бы создать Nuxt.js промежуточное программное обеспечение для проверки подлинности пользователя или нет. Это отлично работает при навигации внутри приложения. Но когда я обновляю страницу, я всегда получаю:

[ОШИБКА] 43:48.846 foo - СЕРВЕР { 15:43:48
ошибка: "не аутентифицирован"
}
 ОШИБКА [ОШИБКА] 43:48.844 Ошибка авторизации - 15:43:48 
 Ошибка: Amplify настроен неправильно.
 В объекте конфигурации отсутствуют требуемые свойства аутентификации.
 Вы запускали `amplify push` после добавления аутентификации через `amplify add auth`?
 См. https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup для получения дополнительной информации
  1. В AWS Amplify есть статья с поддержкой SSR здесь: Поддержка SSR для AWS Amplify Там вы можете найти код для включения SSR и проверки подлинности пользователя
  2. В Nuxt.js Документы, которые вы можете найти:

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

Хорошо, итак, я включил SSR в своем плагине amplify и настроил промежуточное программное обеспечение:

 if (process.server) {
const { Auth } = withSSRContext(context.req)
try {
  await Auth.currentAuthenticatedUser()
} catch (error) {
  return context.redirect(302, '/auth/signin')
}
 

}

Когда я обновляю страницу, код выполняется, но я всегда получаю ошибку «не аутентифицирован» и «Amplify настроен неправильно». С другой стороны, все отлично работает на стороне клиента (вход, регистрация и т. Д.)

Есть идеи, ребята? Я не могу найти решение…

С уважением

Комментарии:

1. вы нашли решение для достижения этой цели?

2. Я тоже его ищу. Есть решение?

Ответ №1:

Я столкнулся с той же проблемой, и оказалось, что мне пришлось скорректировать свою конфигурацию. Я в NextJS, но, похоже, та же проблема. В изменен способ настройки Amplify в моем компоненте с:

 Amplify.configure({ ...config })
 

Для

 Amplify.configure({ ...config, ssr: true })
 

Без установки ssr свойства мой серверный код не смог определить текущего пользователя, прошедшего проверку подлинности, и все, что я получил, это «Пользователь не прошел проверку подлинности» в журналах сервера.

Я использую aws-amplify@3.3.4

Ответ №2:

Просто попробуйте настроить аутентификацию. Нет необходимости предоставлять ssr: true . По крайней мере, это сработало для меня..

 if (process.server) {
const { Auth } = withSSRContext(context.req)
Auth.configure({...config})
try {
  await Auth.currentAuthenticatedUser()
} catch (error) {
  return context.redirect(302, '/auth/signin')
}