我有两个不同的项目。项目 A (amplify 6) 用户可以使用 amplify 登录,如果成功,他将被重定向到项目 B (amplify 5),登录按预期工作,我知道根据用户信息保存了一些 cookie默认从放大。转到项目 B,用户可以在那里注销,这是我的问题,我在项目 B 上尝试了 Auth.signOut() 和 Auth currentAuthenticatedUser() ,但它什么也没做。 currentAuthenticatedUser() 返回没有经过身份验证的用户。
这是我第一次使用 Amplify,我知道我可能在这里遗漏了一些东西,但我认为使用 cookie,我可以注销项目 B 上已在项目 A 上进行身份验证的用户。
项目 B 上的一切配置都很好,我什至尝试使用 Amplify 注册用户,只是为了看看问题是否是我错过的配置,但它有效。
OBS:我在项目 B 上使用 amplify 5,因为由于我使用的 React 版本,我在尝试安装 amplify 6 时遇到了很多问题。
为了从项目 A 获取经过身份验证的用户,我在项目 B 中缺少什么?
这就是我在项目 A 上设置 cookie 的方式
const authConfig: ResourcesConfig['Auth'] = {
Cognito: {
userPoolId: awsmobile.aws_user_pools_id,
userPoolClientId: awsmobile.aws_user_pools_web_client_id
}
};
Amplify.configure({Auth: authConfig});
cognitoUserPoolsTokenProvider.setKeyValueStorage(new CookieStorage());
在项目 B 中,我仅使用 Amplify 中的signOut() 函数。
您需要将域名传递给提供商:
cognitoUserPoolsTokenProvider.setKeyValueStorage(new CookieStorage({ domain: process.env.NEXT_PUBLIC_DOMAIN }))
并使用参数 global: true 退出
await signOut({
global: true
})