使用 SSR 和 Amplify 在 Nuxt.js 中间件中出现“未验证”错误

Dam*_*sus 5 server-side-rendering nuxt.js amplify

我想创建一个 Nuxt.js 中间件来检查用户是否经过身份验证。在应用程序内部导航时效果很好。但是当我刷新页面时,我总是得到:

[错误] 43:48.846 foo - 服务器 { 15:43:48  
  错误:“未通过身份验证”
}
 错误 [错误] 43:48.844 AuthError - 15:43:48  
        错误:Amplify 配置不正确。
        配置对象缺少必需的身份验证属性。
        通过“amplify add auth”添加身份验证后,您是否运行了“amplify push”?
        有关更多信息,请参阅 https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup
  1. AWS Amplify 在此处有一篇关于 SSR 支持的文章:AWS Amplify 的 SSR 支持 在 那里您可以找到启用 SSR 和检查用户身份验证的代码

  2. 在 Nuxt.js 文档中,您可以找到:

在通用模式下,中间件将在服务器端(对 Nuxt 应用程序的第一个请求,例如直接访问应用程序或刷新页面时)和客户端导航到进一步路由时调用一次。

好的,所以我在我的 amplify 插件中启用了 SSR 并调整了中间件:

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

}

当我刷新页面时,代码会被执行,但我总是收到“未验证”错误和“Amplify 未正确配置”。另一方面,在客户端(登录、注册等)一切正常

有什么想法吗?我找不到解决办法...

亲切的问候

sun*_*neg 0

我遇到了同样的问题,结果我必须调整我的配置。我在 NextJS 但看起来是同样的问题。改变了我在组件中配置 Amplify 的方式:

Amplify.configure({ ...config })
Run Code Online (Sandbox Code Playgroud)

Amplify.configure({ ...config, ssr: true })
Run Code Online (Sandbox Code Playgroud)

如果不设置该ssr属性,我的服务器端代码无法获取当前经过身份验证的用户,我在服务器日志中得到的只是“用户未经身份验证”。

我正在使用 aws-amplify@3.3.4