javascript Cognito + Google + React -使用aws放大器时注销不起作用

brccelvz  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(108)

我能够使用Reactjs应用程序中的aws-amplify库登录谷歌帐户。
当我退出并尝试再次登录时,它并不要求我输入谷歌用户名和密码,而是使用之前的会话(不知何故)并将我重定向回我的react应用程序。
我阅读了不同问题并应用了不同的解决方案,但没有一个对我有效。

**解决方案1:**这显然不适用于google注销。

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问题。
1.我不知道如何以及在哪里解决CORS问题?有什么需要在Cognito中配置吗?
1.尝试使用method: "GET"代替method: "POST",但出现相同的CORS问题。
1.我不知道这个方法是对还是错,如果有其他明确的方法,请告诉我。
需要知道正确的方法来注销和破坏用户的会话。所以下次当我试图登录,它必须要求我输入谷歌用户名和密码。

ffdz8vbo

ffdz8vbo1#

Auth.signout()不会将您从Google注销。因此,即使您从应用程序注销,您的Google会话仍然存在。
看看this的回答。
当用户再次尝试登录时,它会将您重定向到Google,并且存在有效的Google会话。这意味着Google不会再次要求您提供凭据。因此,Google会将您重定向回Cognito,然后重定向到应用程序。
这就是为什么在第一种方法中您不会再次看到Google登录页面的原因。

  • 从应用程序注销
  • 在同一个浏览器中导航到gmail并注销(这将清除Google会话。
  • 尝试登录到应用程序。然后,此时将要求您重新向Google进行身份验证。

希望这会有帮助。

相关问题