我在以前版本的 NextJS 中成功使用页面/api 路由连接到 AWS API 网关。我正在尝试使用新的应用路由器在 app/api/route 中做同样的事情。但我无法让
aws-amplify
库工作,即
const {Auth: ssrAuth} = withSSRContext({ req: request }); //works
const user = await ssrAuth.currentAuthenticatedUser(); //fails
这适用于页面路由器,我能够获取用户令牌以将授权方附加到 API 网关请求。
知道为什么吗?请求在那里,我可以看到带有用户令牌的 cookie。我做错了什么?
非常感谢任何反馈/提示
通常情况下,解决方案非常简单。答案深藏于 Amplify docs
通过应用以下更改,Amplify JavaScript 可以与 Next.js App Router (Next.js v13.4+) 一起使用:
将 Amplify 与 Next.js 应用程序一起使用 路由器,您必须在客户端和服务器中运行 Amplify.configure() 成分。必须启用 ssr 选项。
因此,就我而言,当我使用 Auth Context 连接到 AWS Cognito 时,我已经在客户端上安装了
Amplify.configure
。所以,现在我只需要将相同的东西添加到每个路由文件使用的公共库中来构建 axios 配置对象。它神奇地起作用了!显然,双方都需要单独访问环境变量。这有点道理,但是一些更好的文档和更多的例子会很棒。