【问题标题】:How to set session in one method and get the session data in another method in laravel 5.2如何在 laravel 5.2 中以一种方法设置会话并以另一种方法获取会话数据
【发布时间】:2016-04-07 23:41:20
【问题描述】:

此函数将获取会话值

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?

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


【解决方案1】:

当您使用 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']);
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多