Laravel 5 Session不适用于第二页

时间:2016-04-19 05:08:43

标签: php laravel session laravel-5

我是Laravel的新手,并使用Laravel 5 我在Session中存储了一些值,如此

这是一个具有功能的控制器,如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>";

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

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

我已经在Stack Overflow上看到了类似这样的主题,但是我无法理解这些答案,请彻底解释我并解决这个问题,我在最后4到5天无所事事地被困在这部分.... ......

3 个答案:

答案 0 :(得分:0)

如果你使用的是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'中间件的内容。

检查一下: My Laravel 5.2.10 Sessions wont persist

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

答案 1 :(得分:0)

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

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

这将自动检查用户是否通过了身份验证,如果未通过身份验证,则会将其重定向到登录页面

答案 2 :(得分:-1)

创建新的laravel安装后,它正在工作。