2016-04-01 54 views
2

我试图让HybridAuth忘记最后一次用户登录,但没有任何工作!HybridAuth意外会话行为

1 HybridAuth会话甚至不破坏使用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 

我得到会话值然后我用HybridAuth时发现很奇怪的会话行为甚至在初始化Hybrid_Auth类之前。当我刷新页面时,仍然保留相同的值,尽管看起来在代码末尾清除了值。

2-无限重定向循环当你开始

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错误!

这是怎么回事?

回答

4

你可以通过调用

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

$this->hybridauthlib->logoutAllProviders(); 

,你可以通过修改Auth.php用这种方法文件中删除会话特定提供商清除混合验证会话一次性为所有供应商

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

/** 
* 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); 
}