【问题标题】:HybridAuth unexpected session behaviorHybridAuth 意外会话行为
【发布时间】:2016-07-20 22:50:38
【问题描述】:

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

这是怎么回事?

【问题讨论】:

    标签: php session oauth hybridauth


    【解决方案1】:

    您可以通过调用一次清除所有提供商的混合身份验证会话

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-09
      • 2014-11-10
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多