Artikels

Wat is sessies in Laravel, konfigurasie en gebruik met voorbeelde

Laravel-sessies laat jou toe om inligting te stoor en dit uit te ruil tussen versoeke in jou webtoepassing. 

Dit is 'n maklike manier om data vir die huidige gebruiker te behou. Hierdie tutoriaal sal jou die grondslag gee om met sessies in Laravel te werk.

Wat is Laravel-sessie

In Laravel is 'n sessie 'n manier om inligting te stoor, om versoeke wat deur 'n gebruiker gemaak word, behoorlik te hanteer. Wanneer 'n gebruiker 'n Laravel-toepassing begin, begin 'n sessie outomaties vir daardie gebruiker. Die sessiedata word op die bediener gestoor en 'n klein koekie met 'n unieke identifiseerder word na die gebruiker se blaaier gestuur om die sessie te identifiseer.

Jy kan die sessie gebruik om data te stoor wat jy oor verskeie bladsye of versoeke wil gebruik. Byvoorbeeld, jy kan die sessie vir gebruikerstawing gebruik of ander inligting stoor wat jy tydens die sessie op jou toepassing wil gebruik.

Sessie-opstelling in Laravel

Om sessies in Laravel te gebruik, moet jy dit eers in die lêer aktiveer config/session.php van konfigurasie. In hierdie lêer kan u konfigurasieparameters stel wat verband hou met sessies. Byvoorbeeld, die duur van die sessie, die bestuurder om te gebruik vir die stoor van die sessiedata en die stoorplek vir die sessiedata. 

Die lêer het die volgende konfigurasie-opsies:
  • bestuurder: Spesifiseer die voorsessiebestuurderdefigereed om te gebruik. Laravel ondersteun verskeie sessiebestuurders: lêer, koekie, databasis, apc, memcached, redis, dynamodb en skikking;
  • leeftyd: Spesifiseer die aantal minute waarin die sessie as geldig beskou moet word;
  • verval_na_toe_sluiting: As dit op waar gestel is, sal die sessie verval wanneer die gebruiker se blaaier gesluit word;
  • Enkripteer: waar beteken dat die raamwerk die sessiedata sal enkripteer voordat dit gestoor word;
  • lêers: As die lêersessie-drywer gebruik word, spesifiseer hierdie opsie die lêerstoorplek;
  • verband: As die databasissessie-drywer gebruik word, spesifiseer hierdie opsie die databasisverbinding om te gebruik;
  • tafel: As die databasissessie-drywer gebruik word, spesifiseer hierdie opsie die databasistabel om te gebruik om die sessiedata te stoor;
  • Lotery: 'n Reeks waardes wat gebruik word om 'n sessie-ID-koekiewaarde lukraak te kies;
  • koekie: Hierdie opsie spesifiseer die naam van die koekie wat gebruik sal word om die sessie-ID te stoor. Die pad-, domein-, veilige-, http_slegs- en dieselfde_werf-opsies word gebruik om koekie-instellings vir die sessie op te stel.

Hieronder is 'n voorbeeldlêer sessions.php met sessieduur 120 sekondes, gebruik van lêers wat in die gids gestoor is 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',

];

U kan ook die sessie opstel deur omgewingsveranderlikes in die lêer te gebruik .env. Byvoorbeeld, om die databasissessiebestuurder te gebruik en sessiedata in 'n sessietabel te stoor, met MySQL tipe DB, kan jy die volgende omgewingsveranderlikes stel:

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

Laravel sessie opstelling

Daar is drie maniere om met sessiedata in Laravel te werk: 

  • gebruik diehelper van global session;
  • met behulp van die Sessie-fasade;
  • deur a Request instance

In al hierdie gevalle sal die data wat jy in die sessie stoor beskikbaar wees in daaropvolgende versoeke wat deur dieselfde gebruiker gemaak word totdat die sessie verval of met die hand vernietig word.

Innovasie nuusbrief
Moenie die belangrikste nuus oor innovasie mis nie. Registreer om hulle per e-pos te ontvang.

Global Sessie Helper

In Laravel, met behulp van die funksie Global Session Helper dit is 'n gerieflike manier om toegang te verkry tot die sessiedienste wat deur die raamwerk verskaf word. Dit laat jou toe om data van die sessie in jou toepassing te stoor en op te haal. Hier is 'n voorbeeld van hoe om die 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();

Jy kan ook 'n voorwaarde deurgeedefigenoem as die tweede argument vir die funksie session, wat teruggestuur sal word as die gespesifiseerde sleutel nie in die sessie gevind word nie:

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

Voorbeeld van Session Request

In Laravel verwys 'n sessieversoekinstansie na 'n voorwerp wat 'n HTTP-versoek verteenwoordig en inligting oor die versoek bevat, soos die versoekmetode (GET, POST, PUT, ens.), versoek-URL, opskrifte van die versoek en die versoekliggaam . Dit bevat ook verskeie metodes wat gebruik kan word om hierdie inligting te herwin en te manipuleer.

Tipies het jy toegang tot die instansie van Session Request via die veranderlike $request in 'n Laravel-toepassing. U kan byvoorbeeld toegang tot 'n sessie kry via 'n versoekinstansie deur die helperfunksie te gebruik 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');
    }
}

In hierdie voorbeeld, die veranderlike  $request is 'n voorbeeld van die klas Illuminate\Http\Request, wat die huidige HTTP-versoek verteenwoordig. Die funksie session van die versoekinstansie gee 'n instansie van die klas terug Illuminate\Session\Store, wat verskeie funksies verskaf om met die sessie te werk.

Ercole Palmeri

Innovasie nuusbrief
Moenie die belangrikste nuus oor innovasie mis nie. Registreer om hulle per e-pos te ontvang.

Onlangse artikels

Innoverende ingryping in Augmented Reality, met 'n Apple-kyker by die Catania Polikliniek

'n Oftalmoplastie-operasie met die Apple Vision Pro-kommersiële kyker is by die Catania Polikliniek uitgevoer ...

3 Mei 2024

Die voordele van inkleurbladsye vir kinders - 'n wêreld van magie vir alle ouderdomme

Die ontwikkeling van fyn motoriese vaardighede deur inkleur berei kinders voor vir meer komplekse vaardighede soos skryf. Om in te kleur...

2 Mei 2024

Die toekoms is hier: hoe die verskepingsbedryf die wêreldekonomie revolusioneer

Die vlootsektor is 'n ware globale ekonomiese moondheid, wat na 'n 150 miljard-mark navigeer het ...

1 Mei 2024

Uitgewers en OpenAI onderteken ooreenkomste om die vloei van inligting wat deur Kunsmatige Intelligensie verwerk word, te reguleer

Verlede Maandag het die Financial Times 'n ooreenkoms met OpenAI aangekondig. FT lisensieer sy wêreldklas-joernalistiek ...

30 April 2024