mic*_*yks 6 javascript amazon-web-services reactjs amazon-cognito aws-amplify
我可以在 Reactjs 应用程序中使用 aws-amplify 库使用 google 帐户登录。
当我注销并尝试再次登录时,它不会要求我输入谷歌用户名和密码。它使用之前的会话(以某种方式)并将我重定向回我的反应应用程序。
我阅读了不同的问题并应用了各种解决方案,但没有一个对我有用。
解决方案 1:这对于 google 注销显然不起作用。
const logout = () => {
Auth.signout()
}
Run Code Online (Sandbox Code Playgroud)
解决方案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);
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,它引发了 CORS 问题。
我不知道如何以及在哪里解决 CORS 问题?我需要在 cognito 中配置什么吗?
尝试使用method: "GET"而不是method: "POST"相同的 CORS 问题。
我不知道这个做法是对还是错。让我知道是否还有其他明确的方法。
需要知道注销和销毁用户会话的正确方法。所以下次当我尝试登录时,它必须要求我输入谷歌用户名和密码。
更新
解决方案3:
const logout = () => {
window.location.href = "https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.example.com"
}
Run Code Online (Sandbox Code Playgroud)
通过上述方法,它会将我重定向到应用程序的登录页面,但不幸的是,当我再次单击Google Signin按钮时,它不会显示谷歌登录屏幕或不会要求我再次登录。换句话说,它使会话保持活动状态并且不会注销谷歌帐户。
小智 2
Auth.signout()不会让您退出 Google。因此,即使您从应用程序中注销,您的 Google 会话仍然存在。
看看这个答案。
当用户尝试再次登录时,它会将您重定向到 Google,并且存在有效的 Google 会话。这意味着 Google 不会再次要求您提供凭据。因此,Google 会将您重定向回 Cognito,然后再重定向到该应用程序。
这就是为什么您在第一种方法中不会再次看到 Google 登录页面的原因。尝试这个:
希望这会有所帮助。
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |