Laravel 5会话不可用于第二页


Laravel 5 Session not available for the second page

我是Laravel的新手,使用Laravel 5我正在会话中存储一些值,如

这是在一个具有ABC 功能的控制器中

    Session::put('check_in', $check_in);
    Session::put('check_out', $check_out);
    Session::put('no_of_rooms', $no_of_rooms);
    Session::put('adult', $adult);
    Session::put('child', $child);
    return view('room');

我正在房间视图中获取所有这些会话的值,但现在的问题是,当我从这个房间视图转到其他链接或其他页面并将会话用作时

    echo Session::get('check_in')."<br>";
    echo Session::get('check_out')."<br>";
    echo Session::get('no_of_rooms')."<br><br>";
    echo Session::get('adult')."<br>";
    echo Session::get('child')."<br>";

我无法获取这些会话的任何值。

我正在使用会话,所以它必须出现在所有页面上,直到会话闪烁或浏览器关闭,但它不会检索任何会话值。。

我在Stack Overflow上看到过这样的话题,但我无法理解这些答案,请彻底解释我并解决这个问题,我在过去的4到5天里一直被困在这一部分,一无所知。。。。。。。

如果您使用Laravel 5.*,那么您应该在所有使用会话的路由中使用"web"中间件。

如下所示:在app/http目录中的routes.php中

Route::group(['middleware' => 'web'], function () {
   Route::Auth();
   Route::get('/', 'HomeController@index');
   Route::get('/login', 'UserController@userLoginView');
   Route::post('/login', 'UserController@userLogin');
}

通过在"web"中间件下声明会话,您可以在所有这些路由中使用会话。

我建议您在Laravel 5中阅读更多关于"web"中间件的内容。

看看这个:我的Laravel 5.2.10会话不会持续

注意:从Laravel 5.2.27开始,web中间件现在默认已经就位,请尝试删除Route::组,看看这是否有帮助。https://github.com/laravel/laravel/blob/v5.2.27/app/Providers/RouteServiceProvider.php#L56

在控制器中创建一个需要连接用户的构造__construct()

public function __construct()
{
     $this->middleware('auth');
}

这将自动检查用户是否经过身份验证,如果没有,它将把他们重定向到登录页面