![](/img/trans.png)
[英]how to handle axios error unifiedly in asyncData() in SSR 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
AWS Amplify 在这里有一篇关于 SSR 支持的文章: AWS Amplify的 SSR 支持在那里您可以找到启用 SSR 和检查用户身份验证的代码
在 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.