Artikelen

Wat zijn sessies in Laravel, configuratie en gebruik met voorbeelden

Met Laravel-sessies kunt u informatie opslaan en uitwisselen tussen verzoeken in uw webtoepassing. 

Ze zijn een gemakkelijke manier om gegevens voor de huidige gebruiker vast te houden. Deze tutorial geeft je de basis van het werken met sessies in Laravel.

Wat is Laravel-sessie

In Laravel is een sessie een manier om informatie op te slaan, om verzoeken van een gebruiker correct af te handelen. Wanneer een gebruiker een Laravel-applicatie start, start er automatisch een sessie voor die gebruiker. Sessiegegevens worden op de server opgeslagen en een kleine cookie met een unieke identificatiecode wordt naar de browser van de gebruiker gestuurd om de sessie te identificeren.

U kunt sessie gebruiken om gegevens op te slaan die u op meerdere pagina's of verzoeken wilt gebruiken. U kunt de sessie bijvoorbeeld gebruiken voor gebruikersauthenticatie of andere informatie opslaan die u tijdens de sessie wilt gebruiken in uw toepassing.

Sessieconfiguratie in Laravel

Om sessies in Laravel te gebruiken, moet u ze eerst inschakelen in het bestand config/session.php van configuratie. In dit bestand is het mogelijk om configuratieparameters in te stellen met betrekking tot sessies. Zoals de duur van de sessie, de te gebruiken driver voor het opslaan van de sessiegegevens en de opslaglocatie voor de sessiegegevens. 

Het bestand heeft de volgende configuratie-opties:
  • bestuurder: Specificeert het pre-sessie stuurprogrammadefiklaar voor gebruik. Laravel ondersteunt verschillende sessiestuurprogramma's: bestand, cookie, database, apc, memcached, redis, dynamodb en array;
  • levensduur: Specificeert het aantal minuten waarin de sessie als geldig moet worden beschouwd;
  • verlopen_op_sluiten: indien ingesteld op waar, verloopt de sessie wanneer de browser van de gebruiker wordt gesloten;
  • encrypt: waar betekent dat het framework sessiegegevens versleutelt voordat deze worden opgeslagen;
  • bestanden: Als het stuurprogramma voor de bestandssessie wordt gebruikt, specificeert deze optie de bestandsopslaglocatie;
  • versterken: Als het stuurprogramma voor de databasesessie wordt gebruikt, specificeert deze optie de te gebruiken databaseverbinding;
  • tafel: Als het stuurprogramma voor de databasesessie wordt gebruikt, specificeert deze optie de databasetabel die moet worden gebruikt om sessiegegevens op te slaan;
  • loterij: Een reeks waarden die wordt gebruikt om willekeurig een sessie-ID-cookiewaarde te selecteren;
  • koekje: Deze optie specificeert de naam van de cookie die zal worden gebruikt om de sessie-ID op te slaan. De opties path, domain, secure, http_only en same_site worden gebruikt om de cookie-instellingen voor de sessie te configureren.

Hieronder ziet u een voorbeeld van een bestand sessions.php met sessieduur 120 seconden, gebruik van bestanden die zijn opgeslagen in de directory 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 kunt de sessie ook configureren met omgevingsvariabelen in het bestand .env. Om bijvoorbeeld het databasesessiestuurprogramma te gebruiken en sessiegegevens in een sessietabel op te slaan, met MySQL-type DB, kunt u de volgende omgevingsvariabelen instellen:

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

Laravel-sessie instellen

Er zijn drie manieren om met sessiegegevens in Laravel te werken: 

  • gebruik van dehelper van global session;
  • met behulp van de Session-façade;
  • door een Request instance

In al deze gevallen zullen de gegevens die u in de sessie opslaat, beschikbaar zijn in latere verzoeken van dezelfde gebruiker totdat de sessie verloopt of handmatig wordt vernietigd.

Innovatie nieuwsbrief
Mis het belangrijkste nieuws over innovatie niet. Meld u aan om ze per e-mail te ontvangen.

Wereldwijde sessiehelper

In Laravel, met behulp van de functie Global Session Helper het is een handige manier om toegang te krijgen tot de sessieservices die door het framework worden geleverd. Hiermee kunt u gegevens van de sessie in uw applicatie opslaan en ophalen. Hier is een voorbeeld van het gebruik van de 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();

U kunt ook een voorwaarde doorgevendefinite als het tweede argument voor de functie session, die wordt geretourneerd als de opgegeven sleutel niet wordt gevonden in de sessie:

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

Instantie van Session Request

In Laravel verwijst een sessieverzoekinstantie naar een object dat een HTTP-verzoek vertegenwoordigt en informatie over het verzoek bevat, zoals de verzoekmethode (GET, POST, PUT, etc.), verzoek-URL, headers van het verzoek en de hoofdtekst van het verzoek . Het bevat ook verschillende methoden die kunnen worden gebruikt om deze informatie op te halen en te manipuleren.

Meestal benadert u de instantie van het Session Request via de variabele $request in een Laravel-applicatie. Een sessie kan bijvoorbeeld worden benaderd via een verzoekinstantie met behulp van de helperfunctie 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 dit voorbeeld de variabele  $request het is een instantie van de klasse Illuminate\Http\Request, wat het huidige HTTP-verzoek vertegenwoordigt. De functie session request instance retourneert een instantie van de klasse Illuminate\Session\Store, die verschillende functies biedt voor het werken met de sessie.

Ercole Palmeri

Innovatie nieuwsbrief
Mis het belangrijkste nieuws over innovatie niet. Meld u aan om ze per e-mail te ontvangen.

Recente artikelen

De toekomst is hier: hoe de scheepvaartindustrie een revolutie teweegbrengt in de wereldeconomie

De marinesector is een echte mondiale economische macht, die is genavigeerd naar een markt van 150 miljard...

1 mei 2024

Uitgevers en OpenAI ondertekenen overeenkomsten om de informatiestroom die door kunstmatige intelligentie wordt verwerkt, te reguleren

Afgelopen maandag maakte de Financial Times een deal met OpenAI bekend. FT geeft licenties voor haar journalistiek van wereldklasse...

April 30 2024

Online betalingen: hier is hoe streamingdiensten u voor altijd laten betalen

Miljoenen mensen betalen voor streamingdiensten en betalen maandelijkse abonnementskosten. De algemene mening is dat je…

April 29 2024

Veeam biedt de meest uitgebreide ondersteuning voor ransomware, van bescherming tot respons en herstel

Coveware by Veeam zal responsdiensten op het gebied van cyberafpersingsincidenten blijven leveren. Coveware zal forensische en herstelmogelijkheden bieden...

April 23 2024