会话不是在Laravel 5中编写的

use*_*958 1 php session laravel laravel-5

我正在寻求帮助.

我做了一个全新的Laravel装置(此时为5.2.15).我不是在使用Homested.我chmod'存储'目录和子目录,如文档所示,给予写入权限.会话配置为默认值,未触及任何内容.因此会话驱动程序是'文件',路径是'框架/会话'.

我写这些测试路线:

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

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

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

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

'path' => '/',
'domain' => null,
Run Code Online (Sandbox Code Playgroud)

谢谢

Den*_*nko 5

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

 protected $middlewareGroups = [
        'web' => [
        ...
            \Illuminate\Session\Middleware\StartSession::class,
        ...
        ]
 ]
Run Code Online (Sandbox Code Playgroud)

因此,您必须将路由包装在具有"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');
   });
}
Run Code Online (Sandbox Code Playgroud)