Laravel - Sesión

Las sesiones se utilizan para almacenar información sobre el usuario a través de las solicitudes. Laravel proporciona varios controladores comofile, cookie, apc, array, Memcached, Redis, y databasepara manejar los datos de la sesión. De forma predeterminada, se usa el controlador de archivos porque es liviano. La sesión se puede configurar en el archivo almacenado enconfig/session.php.

Acceder a los datos de la sesión

Para acceder a los datos de la sesión, necesitamos una instancia de sesión a la que se pueda acceder mediante una solicitud HTTP. Después de obtener la instancia, podemos usar laget() método, que tomará un argumento, “key”, para obtener los datos de la sesión.

$value = $request->session()->get('key');

Puedes usar all() método para obtener todos los datos de la sesión en lugar de get() método.

Almacenamiento de datos de la sesión

Los datos se pueden almacenar en sesión utilizando el put()método. losput() El método tomará dos argumentos, el “key” y el “value”.

$request->session()->put('key', 'value');

Eliminar datos de la sesión

los forget()El método se utiliza para eliminar un elemento de la sesión. Este método tomará“key” como argumento.

$request->session()->forget('key');

Utilizar flush() método en lugar de forget()método para eliminar todos los datos de la sesión. Utilizar elpull()método para recuperar datos de la sesión y eliminarlos después. El método pull () también tomarákeycomo argumento. La diferencia entreforget() y el pull() el método es ese forget() El método no devolverá el valor de la sesión y pull() El método lo devolverá y eliminará ese valor de la sesión.

Ejemplo

Step 1 - Crea un controlador llamado SessionController ejecutando el siguiente comando.

php artisan make:controller SessionController --plain

Step 2 - Después de una ejecución exitosa, recibirá el siguiente resultado:

Step 3 - Copie el siguiente código en un archivo en

app/Http/Controllers/SessionController.php.

app/Http/Controllers/SessionController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class SessionController extends Controller {
   public function accessSessionData(Request $request) {
      if($request->session()->has('my_name'))
         echo $request->session()->get('my_name');
      else
         echo 'No data in the session';
   }
   public function storeSessionData(Request $request) {
      $request->session()->put('my_name','Virat Gandhi');
      echo "Data has been added to session";
   }
   public function deleteSessionData(Request $request) {
      $request->session()->forget('my_name');
      echo "Data has been removed from session.";
   }
}

Step 4 - Agregue las siguientes líneas en app/Http/routes.php archivo.

app/Http/routes.php

Route::get('session/get','[email protected]');
Route::get('session/set','[email protected]');
Route::get('session/remove','[email protected]');

Step 5 - Visite la siguiente URL para set data in session.

http://localhost:8000/session/set

Step 6 - La salida aparecerá como se muestra en la siguiente imagen.

Step 7 - Visite la siguiente URL para get data from session.

http://localhost:8000/session/get

Step 8 - La salida aparecerá como se muestra en la siguiente imagen.

Step 9 - Visite la siguiente URL para remove session data.

http://localhost:8000/session/remove

Step 10 - Verá un mensaje como se muestra en la siguiente imagen.