我已经在我的 PHP 网站上实现了 Google OAuth2,并且登录工作正常。但注销后,用户不再需要输入Google帐户的密码;他们只需在出现的列表中点击自己的 Google 帐户即可返回。这不是存在安全风险吗?
这是使用 google-api-php-client 版本 2.2.2 的基本 PHP 7.4 设置。
我注销用户
unset($_SESSION["access_token"]);
$gClient->revokeToken();
session_destroy();
因为我将访问 token 存储在 session 变量中。
我希望无论您是第一次登录还是后续登录,登录过程 - 输入 google 帐户名 - 下一步 - 输入密码 - 下一步 - 都是相同的。但第一次之后不会提示您输入密码。
我尝试添加一个包含 Google 注销页面的隐藏 iframe,如下所示:
<iframe id="logoutframe" src="https://accounts.google.com/logout" style="display: none"></iframe>
但这使我完全退出 - 在其他浏览器选项卡中的其他网站上也是如此,我发现这非常不方便。
最佳答案
您已经通过 Google 身份验证,因此无需重新输入密码。
强制注销(正如您使用 iframe
实现的那样)会导致您注销 Google 帐户,从而给您带来不便。
一旦您的应用程序获得了对您 Google 帐户的访问权限,并且您处于有效的 Google 身份验证状态,系统就不会提示您输入密码。这就是 OAuth2 的工作原理,也是设计使然。
关于php - 如何在 PHP 中使用 Google 重新验证时强制提示密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55966129/