gpt4 book ai didi

php - HybridAuth 意外 session 行为

转载 作者:行者123 更新时间:2023-12-02 07:23:57 25 4
gpt4 key购买 nike

我试图让 HybridAuth 忘记上次用户登录,但没有任何效果!!然后我注意到使用 HybridAuth 时非常奇怪的 session 行为:

1- HybridAuth session 即使在使用 session_destroy 时也不会被破坏:

session_start();
var_dump($_SESSION); //Session Values before authentication

require_once("hybridauth/Hybrid/Auth.php");
$config = 'hybridauth/config.php';

$hybridauth = new Hybrid_Auth( $config );
$google = $hybridauth->authenticate( "Google" );

session_unset();
session_destroy();

var_dump($_SESSION); //Session values after destroy

输出:

Session Values before authentication!
array (size=2)
'HA::CONFIG' =>
array (size=3)
< ----- content here ------>
'HA::STORE' =>
array (size=5)
< ----- content here ------>

Session values after destroy
array (size=0)
empty

我什至在初始化 Hybrid_Auth 类之前就获得了 session 值。当我刷新页面时,相同的值仍然存在,尽管这些值似乎在代码末尾被清除。

2- 在开始时清除 session 时无限重定向循环

session_start();
session_destroy();

require_once( "hybridauth/Hybrid/Auth.php" );
$config = 'hybridauth/config.php';

$hybridauth = new Hybrid_Auth( $config );
$google = $hybridauth->authenticate( "Google" );

当我运行上面的代码时,我得到了 ERR_TOO_MANY_REDIRECTS 错误!

这是怎么回事?

最佳答案

您可以通过调用一次清除所有提供者的混合身份验证 session

$this->load->library('hybridauthlib');

$this->hybridauthlib->logoutAllProviders();

您可以通过使用此方法修改您的 Auth.php 文件来删除特定提供者的 session

// --------------------------------------------------------------------

/**
* A generic function to logout from a specific provider
*/

public static function logoutFromProvider($provider)
{
$adapter = Hybrid_Auth::getAdapter( $provider );

$adapter->logout();
}

然后你可以像这样调用这个方法

//$provider can be Facebook, Twitter, Google etc.
public function logout($provider)
{
$this->hybridauthlib->logoutFromProvider($provider);
}

关于php - HybridAuth 意外 session 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36351104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com