为什么我的 Google 登录会话在某些页面上过期,而在其他页面上没有过期?



所以我正在学习如何使用Google的Oauth系统允许用户使用他们的Google帐户登录。我一直在这里使用这种追索权:在我的网站上实施它。

因此,在我的测试页面上,当我尝试登录然后更改页面时,用户仍然成功登录。

但是,当我从测试页面中获取PHP代码时,请将其放在我的全局标头中 - 当用户尝试访问同一链接时。用户登录后,只要他们转到另一个页面,他们就会自动注销。

test2 页面上的代码与其索引页示例完全相同。在我的标题上,我已将其添加到导航栏中,因此当用户在导航栏上按"登录"时,登录按钮位于模式内。

test2 中使用的链接与我的标头中使用的链接相同:

<a class="btn btn-block btn-social btn-google" <?php echo "href='".filter_var($authUrl, FILTER_SANITIZE_URL)."'" ?>>
<span class="fa fa-google"></span> Sign in with Google
</a>

我用这个 if 语句来检查用户是否已登录。如果他们已登录,它将显示带有帐户选项的下拉列表,否则将显示打开模态的登录按钮。也许这就是问题所在,而不是他们的会话过期,难道真的是我检查了错误的功能吗?

<?php if ($gClient->getAccessToken()) { ?>
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="accountmenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<?php echo $gpUserProfile['given_name'] ?>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" id="accountdropdown" aria-labelledby="dropdownMenu1">
<li><a href="/user/bookmarks">Bookmarks</a></li>
<li><a href="#">Settings</a></li>
<li role="separator" class="divider"></li>
<li><a href="/logout">Logout</a></li>
</ul>
</div>
<?php } else { ?>
<a class="btn btn-default" data-toggle="modal" data-target="#login-modal" id="login">Sign In</a>
<?php } ?>

如果有帮助,可以在此处看到完整的标头代码:https://hastebin.com/izihuhavep.scala

好的,我设法修复了它,出于某种原因,当用于创建会话的 PHP 代码在脑海中时,它不起作用。不知道为什么,但是当我将其移到头顶时,它完美地工作:)

相关内容

最新更新