重定向后Laravel 5会话消失

时间:2019-03-06 16:27:11

标签: php laravel laravel-5 laravel-5.2 laravel-5.1

在laravel 5.7中,会话在重定向到另一个页面后消失了。 我正在开发一个应用程序,其中我将用户推送到付款网关页面,然后按照laravel documentation将数据存储在会话中。从支付网关返回后,当我尝试检索该会话时,它返回空。 谁能告诉我如何解决这个问题。

我的代码是这样的

public function processPayment(Request $request)
 {
    //...........
    session()->put('order_checkout_data', [
        'gateway' => 'paypal',
        'data' => $paypalData
    ]);

    //$request->session()->save();  <!-- This i tried after reading some solution but didnt help

    //print_r(session('order_checkout_data')) <!-- I can see the session here

    $paypal = new PayPal();
    $response = $paypal->purchase($paypalData);

    if ($response->isRedirect()) {
        $response->redirect(); //This is where redireting to paypal
            }
}

public function handleGatewayResponse(Request $request){
    print_r(session('order_checkout_data')); //No data
}

我也尝试了会话全局功能和外观,像这样

Session::put('order_checkout_data', [
            'gateway' => 'paypal',
            'data' => $paypalData
        ])

还有

session(['order_checkout_data'=>[
            'gateway' => 'paypal',
            'data' => $paypalData
        ]])

但没有价值。 我的环境设置喜欢这个

SESSION_DRIVER=file
SESSION_LIFETIME=360

我试图通过一些类似的问题进行链接,但这没有帮助。这是我关注的链接:

1 个答案:

答案 0 :(得分:0)

当您使用会话时,SESSION_ID(或类似)Cookie将发送到浏览器,以了解与每个请求关联的会话。

您的processPayment方法是在用户发出请求后调用的(肯定是您的js脚本发出了该请求,但它是相同的),并且您将数据存储在链接到该特定用户的会话中。

在PayPal完成其工作之后,它将对回调URL发出请求。该请求是由PayPal完成的,而不是由您存储数据的用户完成的。 PayPal不知道会话cookie,因此Laravel开始一个新的空会话。