繁体   English   中英

HybridAuth意外的会话行为

[英]HybridAuth unexpected session behavior

我试图让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

输出:

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

这里发生了什么?

您可以通过呼叫一次清除所有提供商的混合验证会话

$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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM