希望有人可以帮我解决这个问题。
我们正在使用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会话处理有关。几乎没有其他屏幕,我认为会话没有保存,因为客户端最近记录了几个与数据丢失相关的错误,而代码逻辑很好并且在本地工作。
任何帮助都会有很大的帮助。
由于
答案 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'得到一些数据。