繁体   English   中英

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

[英]Getting "not authenticated" Error in Nuxt.js middleware with SSR and Amplify

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

[ERROR] 43:48.846 foo - SERVER {                                                                  15:43:48  
  error: 'not authenticated'
}
 ERROR  [ERROR] 43:48.844 AuthError -                                                                     15:43:48  
        Error: Amplify has not been configured correctly.
        The configuration object is missing required auth properties.
        Did you run `amplify push` after adding auth via `amplify add auth`?
        See https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup for more information
  1. AWS Amplify 在这里有一篇关于 SSR 支持的文章: AWS Amplify的 SSR 支持在那里您可以找到启用 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”。 另一方面,在客户端(登录、注册等)一切正常。

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

亲切的问候

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

Amplify.configure({ ...config })

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

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

我正在使用 aws-amplify@3.3.4

只需尝试配置身份验证。 无需提供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')
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM