Dee*_*lue 2 php session oauth hybridauth
我试图让HybridAuth忘记最后一次用户登录,但没有任何效果!! 然后我注意到使用HybridAuth时非常奇怪的会话行为:
1-即使使用session_destroy,也不会破坏HybridAuth会话:
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
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
我甚至在初始化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" );
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我得到ERR_TOO_MANY_REDIRECTS错误!
这里发生了什么?
您可以通过呼叫一次清除所有提供商的混合验证会话
$this->load->library('hybridauthlib');
$this->hybridauthlib->logoutAllProviders();
Run Code Online (Sandbox Code Playgroud)
要么
您可以通过使用此方法修改Auth.php文件来删除特定提供程序的会话
// --------------------------------------------------------------------
/**
* A generic function to logout from a specific provider
*/
public static function logoutFromProvider($provider)
{
$adapter = Hybrid_Auth::getAdapter( $provider );
$adapter->logout();
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样调用此方法
//$provider can be Facebook, Twitter, Google etc.
public function logout($provider)
{
$this->hybridauthlib->logoutFromProvider($provider);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |