Articole

Ce sunt sesiunile în Laravel, configurare și utilizare cu exemple

Sesiunile Laravel vă permit să stocați informații și să le schimbați între solicitări în aplicația dvs. web. 

Sunt o modalitate ușoară de a păstra datele pentru utilizatorul actual. Acest tutorial vă va oferi elementele de bază ale lucrului cu sesiuni în Laravel.

Ce este sesiunea Laravel

În Laravel, o sesiune este o modalitate de a stoca informații, de a gestiona corect solicitările făcute de un utilizator. Când un utilizator pornește o aplicație Laravel, o sesiune este pornită automat pentru acel utilizator. Datele sesiunii sunt stocate pe server și un mic cookie cu un identificator unic este trimis către browserul utilizatorului pentru a identifica sesiunea.

Puteți folosi sesiunea pentru a stoca datele pe care doriți să le utilizați în mai multe pagini sau solicitări. De exemplu, puteți utiliza sesiunea pentru autentificarea utilizatorului sau puteți stoca alte informații pe care doriți să le utilizați în timpul sesiunii în aplicația dvs.

Configurarea sesiunii în Laravel

Pentru a utiliza sesiunile în Laravel, trebuie mai întâi să le activați în fișier config/session.php de configurare. În acest fișier este posibil să setați parametrii de configurare aferenti sesiunilor. Cum ar fi durata sesiunii, driverul de utilizat pentru stocarea datelor sesiunii și locația de stocare pentru datele sesiunii. 

Fișierul are următoarele opțiuni de configurare:
  • şofer: Specifică driverul înainte de sesiunedefigata de folosire. Laravel acceptă mai multe drivere de sesiune: fișier, cookie, bază de date, apc, memcached, redis, dynamodb și array;
  • durata de viaţă: Specifică numărul de minute în care sesiunea trebuie considerată validă;
  • expire_on_close: Dacă este setată la true, sesiunea va expira când browserul utilizatorului este închis;
  • criptați: true înseamnă că cadrul va cripta datele sesiunii înainte ca acestea să fie stocate;
  • fișiere: Dacă se utilizează driverul de sesiune de fișiere, această opțiune specifică locația de stocare a fișierului;
  • conexiune: Dacă se utilizează driverul de sesiune de bază de date, această opțiune specifică conexiunea la baza de date de utilizat;
  • tabel: Dacă se utilizează driverul de sesiune al bazei de date, această opțiune specifică tabelul bazei de date de utilizat pentru a stoca datele sesiunii;
  • loterie: o serie de valori utilizate pentru a selecta aleatoriu o valoare cookie ID-ul de sesiune;
  • fursec: Această opțiune specifică numele cookie-ului care va fi folosit pentru a stoca ID-ul sesiunii. Opțiunile calea, domeniul, securitatea, http_only și same_site sunt utilizate pentru a configura setările cookie-urilor pentru sesiune.

Mai jos este un exemplu de fișier sessions.php cu durata sesiunii de 120 de secunde, utilizarea fișierelor stocate în director 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',

];

De asemenea, puteți configura sesiunea folosind variabilele de mediu din fișier .env. De exemplu, pentru a utiliza driverul de sesiune al bazei de date și pentru a stoca datele de sesiune într-un tabel de sesiune, cu DB de tip MySQL, puteți seta următoarele variabile de mediu:

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

Configurarea sesiunii Laravel

Există trei moduri de a lucra cu datele de sesiune în Laravel: 

  • folosindhelper de global session;
  • folosind fațada Sesiunii;
  • prin unul Request instance

În toate aceste cazuri, datele pe care le stocați în sesiune vor fi disponibile în solicitările ulterioare făcute de același utilizator până când sesiunea expiră sau este distrusă manual.

Buletin informativ de inovare
Nu rata cele mai importante știri despre inovație. Înscrieți-vă pentru a le primi pe e-mail.

Global Session Helper

În Laravel, folosind funcția Global Session Helper este o modalitate convenabilă de a accesa serviciile de sesiune oferite de framework. Vă permite să stocați și să preluați date din sesiune în aplicația dvs. Iată un exemplu despre cum se utilizează 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();

De asemenea, puteți trece o valoare predefinite ca al doilea argument al funcției session, care va fi returnat dacă cheia specificată nu este găsită în sesiune:

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

Instanță de Session Request

În Laravel, o instanță de solicitare de sesiune se referă la un obiect care reprezintă o solicitare HTTP și conține informații despre cerere, cum ar fi metoda solicitării (GET, POST, PUT etc.), URL-ul solicitării, anteturile solicitării și corpul solicitării. . Conține, de asemenea, diverse metode care pot fi folosite pentru a prelua și manipula aceste informații.

De obicei, accesați instanța Session Request prin variabila $request într-o aplicație Laravel. De exemplu, o sesiune poate fi accesată printr-o instanță de solicitare folosind funcția de ajutor 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');
    }
}

În acest exemplu, variabila  $request este o instanță a clasei Illuminate\Http\Request, care reprezintă cererea HTTP curentă. Functia session request instance returnează o instanță a clasei Illuminate\Session\Store, care oferă diverse funcții pentru lucrul cu sesiunea.

Ercole Palmeri

Buletin informativ de inovare
Nu rata cele mai importante știri despre inovație. Înscrieți-vă pentru a le primi pe e-mail.

Articole recente

Editorii și OpenAI semnează acorduri pentru a reglementa fluxul de informații procesate de Inteligența Artificială

Luni trecută, Financial Times a anunțat un acord cu OpenAI. FT își licențiază jurnalismul de clasă mondială...

Aprilie 30 2024

Plăți online: Iată cum serviciile de streaming vă fac să plătiți pentru totdeauna

Milioane de oameni plătesc pentru serviciile de streaming, plătind taxe lunare de abonament. Este o părere comună că tu...

Aprilie 29 2024

Veeam oferă cel mai complet suport pentru ransomware, de la protecție la răspuns și recuperare

Coveware de la Veeam va continua să ofere servicii de răspuns la incidente de extorcare cibernetică. Coveware va oferi capacități criminalistice și de remediere...

Aprilie 23 2024

Revoluția verde și digitală: cum întreținerea predictivă transformă industria petrolului și gazelor

Întreținerea predictivă revoluționează sectorul petrolului și gazelor, cu o abordare inovatoare și proactivă a managementului uzinelor...

Aprilie 22 2024