Laravel 5 – la sesión no funciona

Aquí está config/session.php :

 return [ 'driver' => 'file', 'files' => storage_path().'/framework/sessions', ]; 

Mi storage/framework/sessions tienen 755 permisos.

Cuando puse estas 2 líneas en mi controlador

 Session::set('aa', 'bb'); dd(Session::get('aa')); 

Recibo la salida "bb" esperada. Pero si comento la primera línea:

 // Session::set('aa', 'bb'); dd(Session::get('aa')); 

y página de actualización, todavía espero "bb" pero obtengo null .

Además, storage/framework/sessions está vacío.

¿Qué debo hacer para que la sesión funcione?

Laravel 5 maneja sesiones a través de una clase de middleware llamada StartSession . Más importante aún, este middleware es un TerminableMiddleware y el código que realmente guarda los datos (en su caso en el archivo de sesión) se encuentra en el método de terminate , que se ejecuta al final del ciclo de vida de la solicitud:

 public function terminate($request, $response) { if ($this->sessionHandled && $this->sessionConfigured() && ! $this->usingCookieSessions()) { $this->manager->driver()->save(); } } 

Cuando se llama a dd(Session::get('aa')); la solicitud se está interrumpiendo antes de que se pueda llamar al método de terminate del middleware.

Curiosamente, la Documentación de Middleware de Laravel en realidad explica la lógica Terminable Middleware al dar el middleware Laravel StartSession como un ejemplo:

Por ejemplo, el middleware de “sesión” incluido con Laravel escribe los datos de la sesión en el almacenamiento después de que la respuesta se haya enviado al navegador.

Una vez dicho esto, intente usar var_dump() lugar de usar dd() .