会话不是在Laravel 5中编写的

时间:2016-02-13 17:40:14

标签: php laravel session laravel-5

我正在寻求帮助。

我新装了Laravel(此时为5.2.15)。 我不是在使用Homested。 我chmod'存储'目录和子目录,如文档所示,给予写入权限。 会话配置为默认值,未触及任何内容。因此会话驱动程序是'file',path是'framework / sessions'。

我写了这些测试路线:

Route::get('/', function () {
    session(["test" => "ok"]);
    return view('welcome');
});

Route::get('/2', function () {
    print "session = ".session('test');exit();
});

看到会话工作不应该足够吗? session('test')为null,并且没有在框架/会话中写入文件。 Chmoded 777框架/会话文件夹,确保没有任何改变。

我是Laravel的新手..也许我错过了什么? 我需要在config / session.php中设置这些变量吗?

'path' => '/',
'domain' => null,

谢谢

2 个答案:

答案 0 :(得分:5)

如果您打开app / Http / Kernel.php,您会看到该会话类是“web”组的一部分,因此默认情况下不会包含它:

 protected $middlewareGroups = [
        'web' => [
        ...
            \Illuminate\Session\Middleware\StartSession::class,
        ...
        ]
 ]

因此,您必须将路由包装在具有“web”中间件的组中,或者将“web”中间件分别添加到每个路径:

Route::group(['middleware' => ['web']], function() {
    Route::get('/', function () {
        session()->put('test', 'ok');
        return view('welcome');
    });

    Route::get('/2', function () {
        return 'session = ' . session('test');
   });
}

答案 1 :(得分:2)

试试这个:

Route::get('/', function () {
    Session::put('test', 'ok');
    return view('welcome');
});

Route::get('/2', function () {
    print "session = ".Session::get('test');exit();
});