簡體   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