#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 для получения дополнительной информации
- В AWS Amplify есть статья с поддержкой SSR здесь: Поддержка SSR для AWS Amplify Там вы можете найти код для включения SSR и проверки подлинности пользователя
- В 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')
}