Jam*_*xam 6 authentication amazon-web-services next.js aws-amplify
我有一个 Next.js 应用程序,它使用 AWS Cognito 用户池进行身份验证。我有一个自定义 UI,并在我的代码中使用aws-amplify
直接调用signIn
/ signOut
/etc... 的包。(我之前使用过 AWS 托管 UI,并且遇到了下面列出的相同问题 - 我希望切换并深入研究能够揭示我的问题的实际 API,但事实并非如此)
开发中的所有内容(在本地主机上运行)都工作正常 - 我可以使用以下命令在页面的渲染函数中登录并访问当前会话
import { Auth } from 'aws-amplify';
...
export default const MyPage = (props) => {
useEffect(async () => {
const session = await Auth.currentSession();
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
以及SSR期间
import { withSSRContext } from 'aws-amplify';
...
export async function getServerSideProps(context) {
...
const SSR = withSSRContext(context);
const session = await SSR.Auth.currentSession();
...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我部署到运行临时环境的 AWS Amplify 时,在 SSR 期间获取当前会话的调用失败。这会导致页面呈现就像用户未登录一样,然后在客户端能够确定用户实际上已登录时进行切换。
目前的假设 - 缺少 cookies(??):
我已检查在登录过程中是否在浏览器中正确设置了 AWS cookie。我还检查过,devtools 告诉我 cookie 已通过请求正确发送到服务器。
context.req.headers
但是,如果我在临时环境中注销getServerSideProps
,则 cookie 标头会丢失(而在我的开发环境中它会正确显示)。如果这是真的,这可以解释我所看到的情况,因为getServerSideProps
没有看到我的身份验证令牌等...但我不明白为什么 cookie 标头会被删除?
以前有人见过这样的事情吗?这可能吗?如果是这样,为什么会发生这种情况?我认为我遗漏了一些东西,例如与配置相关的东西,但我觉得我已经非常仔细地遵循了文档 - 我当前的配置看起来像这样
Amplify.configure({
Auth: {...}
ssr: true
});
Run Code Online (Sandbox Code Playgroud)
Next.js 版本是11.1.2
(最新)
非常感谢任何帮助!
归档时间: |
|
查看次数: |
3393 次 |
最近记录: |