5

我想创建一个 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 支持的文章:SSR Support for AWS Amplify 在那里您可以找到启用 SSR 和检查用户身份验证的代码

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

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

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

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

}

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

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

亲切的问候

4

1 回答 1

0

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

Amplify.configure({ ...config })

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

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

我正在使用 aws-amplify@3.3.4

于 2021-03-12T13:45:28.273 回答