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
AWS Amplify 在此处有一篇关于 SSR 支持的文章:AWS Amplify 的 SSR 支持 在 那里您可以找到启用 SSR 和检查用户身份验证的代码
在 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 未正确配置”。另一方面,在客户端(登录、注册等)一切正常
有什么想法吗?我找不到解决办法...
亲切的问候
我遇到了同样的问题,结果我必须调整我的配置。我在 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
归档时间: |
|
查看次数: |
419 次 |
最近记录: |