Articles

Què són les sessions a Laravel, configuració i ús amb exemples

Les sessions de Laravel us permeten emmagatzemar informació i intercanviar-la entre sol·licituds a la vostra aplicació web. 

Són una manera fàcil de conservar les dades de l'usuari actual. Aquest tutorial us donarà les bases per treballar amb sessions a Laravel.

Què és la sessió de Laravel

A Laravel, una sessió és una manera d'emmagatzemar informació, de gestionar correctament les peticions realitzades per un usuari. Quan un usuari inicia una aplicació Laravel, s'inicia automàticament una sessió per a aquest usuari. Les dades de la sessió s'emmagatzemen al servidor i s'envia una petita galeta amb un identificador únic al navegador de l'usuari per identificar la sessió.

Podeu utilitzar la sessió per emmagatzemar les dades que voleu utilitzar en diverses pàgines o sol·licituds. Per exemple, podeu utilitzar la sessió per a l'autenticació d'usuari o emmagatzemar altra informació que voleu utilitzar durant la sessió a la vostra aplicació.

Configuració de la sessió a Laravel

Per utilitzar sessions a Laravel, primer heu d'habilitar-les al fitxer config/session.php de configuració. En aquest fitxer és possible establir paràmetres de configuració relacionats amb les sessions. Com ara la durada de la sessió, el controlador que s'utilitzarà per emmagatzemar les dades de la sessió i la ubicació d'emmagatzematge de les dades de la sessió. 

El fitxer té les opcions de configuració següents:
  • conductor: especifica el controlador anterior a la sessiódefillest per utilitzar. Laravel admet diversos controladors de sessió: fitxer, galeta, base de dades, apc, memcached, redis, dynamodb i array;
  • tota la vida: Especifica el nombre de minuts en què s'ha de considerar vàlida la sessió;
  • expire_on_close: si es defineix com a true, la sessió caducarà quan es tanqui el navegador de l'usuari;
  • xifrar: true significa que el marc xifrarà les dades de la sessió abans que s'emmagatzemin;
  • arxius: Si s'utilitza el controlador de sessió de fitxers, aquesta opció especifica la ubicació d'emmagatzematge del fitxer;
  • connexió: Si s'utilitza el controlador de sessió de base de dades, aquesta opció especifica la connexió de base de dades que cal utilitzar;
  • taula: Si s'utilitza el controlador de sessió de base de dades, aquesta opció especifica la taula de base de dades que s'utilitzarà per emmagatzemar les dades de la sessió;
  • loteria: una matriu de valors utilitzats per seleccionar aleatòriament un valor de galeta d'ID de sessió;
  • galeta: Aquesta opció especifica el nom de la galeta que s'utilitzarà per emmagatzemar l'ID de sessió. Les opcions de ruta, domini, segur, http_only i same_site s'utilitzen per configurar la configuració de les galetes per a la sessió.

A continuació es mostra un exemple d'un fitxer sessions.php amb una durada de la sessió de 120 segons, ús dels fitxers emmagatzemats al directori framework/sessions:

<?php

use Illuminate\Support\Str;

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE'),
    'http_only' => true,

    'same_site' => 'lax',

];

També podeu configurar la sessió mitjançant les variables d'entorn del fitxer .env. Per exemple, per utilitzar el controlador de sessió de base de dades i emmagatzemar dades de sessió en una taula de sessió, amb la base de dades de tipus MySQL, podeu establir les variables d'entorn següents:

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions

Configuració de la sessió de Laravel

Hi ha tres maneres de treballar amb dades de sessió a Laravel: 

  • utilitzant elhelper de global session;
  • utilitzant la façana de la sessió;
  • a través d’un Request instance

En tots aquests casos, les dades que emmagatzemeu a la sessió estaran disponibles en les posteriors sol·licituds realitzades pel mateix usuari fins que la sessió caduqui o es destrueixi manualment.

Butlletí d'innovació
No et perdis les notícies més importants sobre innovació. Registra't per rebre'ls per correu electrònic.

Auxiliar de sessió global

A Laravel, utilitzant la funció Global Session Helper és una manera còmoda d'accedir als serveis de sessió proporcionats pel framework. Us permet emmagatzemar i recuperar dades de la sessió a la vostra aplicació. Aquí teniu un exemple de com utilitzar el session helper:

// Store data in the session
session(['key' => 'value']);

// Retrieve data from the session
$value = session('key');

// Remove data from the session
session()->forget('key');

// Clearing the Entire Session
session()->flush();

També podeu passar un valor predefinite com a segon argument de la funció session, que es retornarà si la clau especificada no es troba a la sessió:

$value = session('key', 'default');

En lloc de Session Request

A Laravel, una instància de sol·licitud de sessió fa referència a un objecte que representa una sol·licitud HTTP i conté informació sobre la sol·licitud, com ara el mètode de sol·licitud (GET, POST, PUT, etc.), l'URL de la sol·licitud, les capçaleres de la sol·licitud i el cos de la sol·licitud. . També conté diversos mètodes que es poden utilitzar per recuperar i manipular aquesta informació.

Normalment s'accedeix a la instància del Session Request a través de la variable $request en una aplicació Laravel. Per exemple, es pot accedir a una sessió mitjançant una instància de sol·licitud mitjançant la funció d'ajuda session().

use Illuminate\Http\Request;

class ExampleController extends Controller
{
   public function example(Request $request)
   {
       // Store data in the session using the put function
       $request->session()->put('key', 'value');

       // Retrieve data from the session using the get function
       $value = $request->session()->get('key');

       // Check if a value exists in the session using the has function:
       if ($request->session()->has('key')) {
           // The key exists in the session.
       }

       // To determine if a value exists in the session, even if its value is null:
       if ($request->session()->exists('users')) {
           // The value exists in the session.
       }

       // Remove data from the session using the forget function
       $request->session()->forget('key');
    }
}

En aquest exemple, la variable  $request és una instància de la classe Illuminate\Http\Request, que representa la sol·licitud HTTP actual. La funció session request instance retorna una instància de la classe Illuminate\Session\Store, que ofereix diverses funcions per treballar amb la sessió.

Ercole Palmeri

Butlletí d'innovació
No et perdis les notícies més importants sobre innovació. Registra't per rebre'ls per correu electrònic.

Articles recents

Intervenció innovadora en Realitat Augmentada, amb un visor Apple al Policlínic de Catània

Es va realitzar una operació d'oftalmoplàstia amb el visualitzador comercial Apple Vision Pro a la Policlínica de Catània...

3 maig 2024

Els avantatges de les pàgines per pintar per a nens: un món de màgia per a totes les edats

El desenvolupament de la motricitat fina a través del color prepara els nens per a habilitats més complexes com escriure. Per acolorir...

2 maig 2024

El futur és aquí: com la indústria naviliera està revolucionant l'economia global

El sector naval és una veritable potència econòmica mundial, que ha navegat cap a un mercat de 150 milions...

1 maig 2024

Els editors i OpenAI signen acords per regular el flux d'informació processada per la Intel·ligència Artificial

Dilluns passat, el Financial Times va anunciar un acord amb OpenAI. FT autoritza el seu periodisme de classe mundial...

30 2024 abril