YII2 AuthClient onAuthSuccess会话未保存

时间:2016-04-13 08:39:18

标签: php session yii2

希望有人可以帮我解决这个问题。

我们正在使用AuthClient进行社交注册和登录。功能在Windows XAMPP(PHP 5.6)上本地工作正常,但在服务器(Amazon Ec2 AMI,PHP 5.6)上,代码不保存会话数据。

public function onAuthSuccess($client)
{   
    //.... COMMENTED CODE
    $session = Yii::$app->session;

    //Store social info in session
    $session['socialClient'] = $_GET['authclient'];

    return;
}

当我们尝试在以下Controller Action中访问上述函数中的会话数据集时,永远不会保存会话数据。

经过数小时的研究,如果我们使用PHP标准header()exit(),那么这一切都很好。

header("Location: " . $authObj->getSuccessUrl());
exit();

我尝试了所有组合,但仍然没有运气。

e.g。返回$this->redirect()

我不确定它是否是PHP问题或与YII2会话处理有关。几乎没有其他屏幕,我认为会话没有保存,因为客户端最近记录了几个与数据丢失相关的错误,而代码逻辑很好并且在本地工作。

任何帮助都会有很大的帮助。

由于

3 个答案:

答案 0 :(得分:0)

尝试使用$ session-> open(); 在分配一些值之前先打开一个会话。

因此,您的代码应该是:

    `public function onAuthSuccess($client)
{   

    $session = Yii::$app->session;
    $session->open();//Open session.
    //Store social info in session
    $session['socialClient'] = $_GET['authclient'];

    return;
}

答案 1 :(得分:0)

你说onAuthSuccess()是一个行动吗?如果是,那么请使用actionOnAuthSuccess()。这可能是您没有在会话中获取值的原因,因为从未找到此操作。

答案 2 :(得分:0)

在他们的例子中:

 public function successCallback($client)
 {
      $attributes = $client->getUserAttributes();
      // user login or signup comes here
 }

您的代码:

//Store social info in session
$session['socialClient'] = $_GET['authclient'];

它是一个回调函数,你不会从$ _GET获得任何参数。 您可以使用变量' $ client'得到一些数据。