2016-04-01 88 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); 
}