laravel 5.2 如何在一种方法中设置会话并在另一种方法中获取会话数据

How to set session in one method and get the session data in another method in laravel 5.2

此函数将获取会话值

public function getSession(){
    $value =Session::get('email');
    var_dump($value) ;
}

此函数用于设置会话值

public function setSession(){
    Session::put('email', 'aaaaaaa.com');

    $value=Session::get('email');
    var_dump($value);

}

routes.php

Route::get('store','Product@setSession');
Route::get('display','Product@getSession');

在 url 中输入显示时显示 NULL

当您使用 Laravel 5.2 时,您可能必须在 'web' 组下设置路由才能使用会话。

实际上,Laravel初始化了\Illuminate\Session\Middleware\StartSession::class中间件中的Session,即分组在'web'中间件组下(从Kernel.php文件中可以看出)

因此,要使用会话,您的路由应使用该中间件:

Route::group(['middleware' => ['web']], function () {
    Route::get('store','Product@setSession');
    Route::get('display','Product@getSession');
});

此外,我建议您适当关闭请求周期,以确保会话将被设置,例如:

public function setSession(){
    Session::put('email', 'aaaaaaa.com');
    $value=Session::get('email');

    //this will end the request-lifecycle 
    return Response::json(['result' => 'ok']);
}

如果您要全新安装 laravel 5.2,您可以在路由文件中看到添加了一个中间件 ['web'],它位于 \Illuminate\Session\Middleware\StartSession::class 下,如果您将在路由中使用该组下的会话,会话将在那里正常工作,或者如果您使用任何其他组,则必须使用该中间件。