2016-04-01 4 views
2

Я пытался заставить HybridAuth забыть логин последнего пользователя, но ничего не работало !! Затем я заметил, очень странное поведение сеанса при использовании 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 

Я получаю значения сессии даже до инициализации класса 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

Вы можете очистить Гибридный Auth сессии для всех поставщиков сразу по телефону

$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); 
} 
Смежные вопросы