Saltar al contenido

Habilitación de sesión en lumen framework

Te traemos el resultado a esta duda, al menos eso pensamos. Si presentas preguntas compártelo en un comentario, que sin tardanza

Solución:

Actualización al 18 de julio de 2019

(Esta respuesta estaba recibiendo mucha atención de la comunidad de Laravel, así que pensé en actualizarla).

Laravel ha dejado oficialmente de admitir sesiones y vistas en laravel/lumen marco de la versión 5.2 y en adelante.

Pero laravel todavía tiene un componente illuminate/session que se puede instalar en lumen/framework y podemos jugar con esto.

Paso 1

Instalar en pc illuminate/session usando

composer require illuminate/session

Paso 2

Ahora ve a bootstrap/app.php y agregue este middleware

$app->middleware([
    IlluminateSessionMiddlewareStartSession::class,
]);

El propósito de agregar el middleware anterior es iniciar la sesión en cada solicitud y guardar la sesión antes de entregar la respuesta.

Paso 3

Ahora agrega config/session.phpya que no está presente en Lumen por defecto. Puedes tomar session.php del repositorio oficial de Laravel.

Paso 4

Cree el directorio de almacenamiento de la sesión del marco por

mkdir -p storage/framework/sessions

Gracias a DayDream

Paso – 5

En bootstrap/app.php añadir enlaces para IlluminateSessionSessionManager

$app->singleton(IlluminateSessionSessionManager::class, function () use ($app) 
    return $app->loadComponent('session', IlluminateSessionSessionServiceProvider::class, 'session');
);

$app->singleton('session.store', function () use ($app) 
    return $app->loadComponent('session', IlluminateSessionSessionServiceProvider::class, 'session.store');
);

Gracias a @xxRockOnxx por encontrar loadComponent método. Se necesitan 3 argumentos,

  • el primero es config Nombre del archivo. (el archivo debe estar presente en config/ directorio)
  • el segundo es ServiceProvider FQN
  • tercero es el retorno de este método.

loadComponent solo llama al $app->register e inyectar $app mientras construía el ServiceProvider

Cómo utilizar


// Save Session
$router->get('/', function (IlluminateHttpRequest $request) 

    $request->session()->put('name', 'Lumen-Session');

    return response()->json([
        'session.name' => $request->session()->get('name')
    ]);
);


// Test session
$router->get('/session', function (IlluminateHttpRequest $request) 

    return response()->json([
        'session.name' => $request->session()->get('name'),
    ]);
);

También agregué un ejemplo sobre github.

https://github.com/rummykhan/lumen-session-example

Es importante que también uses $request->session()De lo contrario, no funcionará.

Probé la solución mencionada anteriormente, sin embargo, también es necesario crear una carpeta storage/framework/sessions si utiliza la configuración predeterminada.

Reseñas y valoraciones

Acuérdate de que puedes agregar una reseña si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *