在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中键入display时,它显示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下,如果你要在路由中使用该组下的会话,会话在那里会正常工作,或者如果你使用任何其他组,那么你必须使用该中间件。