not found app php laravel session laravel-5 session-cookies

php - found - Mi Laravel 5.2.10 Sesiones no persistirĂ¡n



session store not set on request. (1)

Tengo una nueva instalación de Laravel 5, de hecho, he probado esto en múltiples versiones y sigo teniendo el mismo problema.

No cambié nada de lo predeterminado, excepto configurar el controlador de sesión en redis. (Archivo basado también tiene el mismo problema).

Tengo dos rutas establecidas de la siguiente manera

Route::get(''/set/{value}'', function($value) { var_dump(Session::getId()); Session::set(''test'', $value); return view(''welcome''); }); Route::get(''/get'', function() { return ''Get '' . Session::get(''test''); });

Si visito el url / set / abc, veo que la sesión aparece en REDIS (también veo el archivo creado cuando uso el archivo). La sesión se ve bien en REDIS como se muestra a continuación

127.0.0.1:6379> KEYS * 1) "laravel:1a3ae6caff6346e4a173fdc1ab4c6eb0f138806b" 2) "laravel:fed1af2fb44c6e625953237c3fa6fcbb05366a5c" 3) "laravel:cb37286ccfe3e7caa20557aca840f50cb5a5f20d"

Cada vez que visito la página, recrea una nueva sesión.

Las partes clave del archivo session.php son las siguientes:

''lifetime'' => 120, ''expire_on_close'' => false,

También he comprobado en REDIS el TTL de las variables de sesión y se inicializan a los 120 minutos (equivalentes en segundos).

¿Alguna idea de lo que estoy haciendo mal?

Merece la pena señalar que estoy usando una vides homestead (completamente disponible) para probar esto. También intenté usar múltiples navegadores. Nunca se envían cookies al navegador, supongo que se debe enviar una identificación de sesión al navegador como parte de la solicitud de obtención inicial.


La clase middleware de Laravel /Illuminate/Session/Middleware/StartSession es responsable de comenzar su sesión. Antes de L5.2, esto se ejecutaba en cada solicitud porque era parte de la pila de middleware global. Ahora, es opcional porque L5.2 quiere permitir tanto una interfaz de usuario web como una API dentro de la misma aplicación.

Si abre la app/Http/Kernel.php , verá que el middleware StartSession es parte de un grupo de middleware llamado web . Debes poner todas tus rutas allí para que tu ejemplo funcione.

Route::group([''middleware'' => [''web'']], function () { Route::get(''/set/{value}'', function($value) { var_dump(Session::getId()); Session::set(''test'', $value); return view(''welcome''); }); Route::get(''/get'', function() { return ''Get '' . Session::get(''test''); }); });

Puede ver que el grupo de middleware web también es responsable de otras cosas como proporcionar la variable $errors en todas las vistas.

Puede leer más sobre esto en los documentos:

De forma predeterminada, el archivo routes.php contiene una ruta única, así como un grupo de ruta que aplica el grupo de middleware web a todas las rutas que contiene. Este grupo de middleware proporciona protección de estado de sesión y CSRF a las rutas.

Las rutas que no se encuentren dentro del grupo de middleware web no tendrán acceso a las sesiones ni a la protección CSRF, por lo tanto, asegúrese de que las rutas que necesitan estas funciones se coloquen dentro del grupo. Normalmente, colocará la mayoría de sus rutas dentro de este grupo:

Fuente: https://laravel.com/docs/5.2/routing