[英]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.