【发布时间】:2022-12-10 02:24:36
【问题描述】:
我可以使用 Reactjs 应用程序中的 aws-amplify 库登录谷歌帐户。
当我注销并尝试再次登录时,它不会要求我提供 google 用户名和密码。它使用上一个会话(以某种方式)并将我重定向回我的反应应用程序。
我阅读了不同的问题并应用了各种解决方案,但没有一个对我有用。
解决方案 1:这显然不适用于谷歌注销。
const logout = () => {
Auth.signout()
}
解决方案 2:
const logout = () => {
const requestOptions = {
method: "POST",
'Content-Type': 'application/x-www-form-urlencoded'
};
const url = `https://{domain}.amazoncognito.com/logout?client_id=xxx&response_type=code&scope=xxx&redirect_uri=http://xxx/logout`;
await fetch(url, requestOptions);
}
但出于某种原因,它引发了 CORS 问题。
-
我不知道如何以及在哪里解决 CORS 问题?我需要在 cognito 中配置什么吗?
-
尝试使用
method: "GET"而不是method: "POST"但同样的 CORS 问题。 -
我不知道这种做法是对还是错。让我知道是否有其他明确的方法。
需要知道注销和销毁用户会话的正确方法。所以下次我尝试登录时,它必须要求我输入谷歌用户名和密码。
【问题讨论】:
-
您是否将此解决方案与 API Gateway 或 S3 结合使用?
-
不,我没有。它是 amplify+react 和 cognito 之间针对 google(外部身份提供者)用户的直接通信。对于 congito 用户(不是外部识别提供者用户),我们有 lambda + api 网关。
-
尝试允许 API Gateway 中的 cors,因为 Cognito 中没有 cors,所以您的问题似乎来自 API Gateway
-
我已经在 API 网关中完成了,但没有用。在我的案例中,Google 流程与 lambda 或 api 网关无关。
标签: javascript reactjs amazon-web-services amazon-cognito aws-amplify