繁体   English   中英

YII2 AuthClient onAuthSuccess会话未保存

[英]YII2 AuthClient onAuthSuccess session Not Saving

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

我们正在使用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();

我尝试了所有的组合,但还是没有运气。

例如return $this->redirect()

我不确定这是PHP问题还是与YII2会话处理有关。 其他屏幕很少,我相信会话没有保存,因为客户端最近记录了一些与数据丢失有关的错误,而代码逻辑很好并且可以在本地运行。

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

谢谢

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

因此,您的代码应类似于:

    `public function onAuthSuccess($client)
{   

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

    return;
}

您说过onAuthSuccess()是一种操作对吗? 如果是,请使用actionOnAuthSuccess()。 这可能是您未在会话中获取值的原因,因为从未发现此操作。

在他们的示例中:

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

您的代码:

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

这是一个回调函数,您不会从$ _GET获得任何参数。 您可以使用变量“ $ client”来获取一些数据。

暂无
暂无

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

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