Artikler

Hvad er sessioner i Laravel, konfiguration og brug med eksempler

Laravel-sessioner giver dig mulighed for at gemme oplysninger og udveksle dem mellem anmodninger i din webapplikation. 

De er en nem måde at bevare data på for den aktuelle bruger. Denne tutorial giver dig det grundlæggende i at arbejde med sessioner i Laravel.

Hvad er Laravel session

I Laravel er en session en måde at gemme information på, for korrekt at håndtere anmodninger fra en bruger. Når en bruger starter en Laravel-applikation, startes en session automatisk for denne bruger. Sessionsdata gemmes på serveren, og en lille cookie med en unik identifikator sendes til brugerens browser for at identificere sessionen.

Du kan bruge session til at gemme data, som du vil bruge på tværs af flere sider eller anmodninger. For eksempel kan du bruge sessionen til brugergodkendelse eller gemme andre oplysninger, som du vil bruge under sessionen i din applikation.

Sessionskonfiguration i Laravel

For at bruge sessioner i Laravel skal du først aktivere dem i filen config/session.php af konfiguration. I denne fil er det muligt at indstille konfigurationsparametre relateret til sessioner. For eksempel sessionens varighed, driveren, der skal bruges til lagring af sessionsdataene, og lagringsstedet for sessionsdataene. 

Filen har følgende konfigurationsmuligheder:
  • driver: Specificerer pre-session-driverendefiklar til brug. Laravel understøtter flere sessionsdrivere: fil, cookie, database, apc, memcached, redis, dynamodb og array;
  • levetid: Angiver det antal minutter, hvor sessionen skal anses for gyldig;
  • udløber_ved_luk: Hvis den er sat til sand, udløber sessionen, når brugerens browser lukkes;
  • kryptere: sand betyder, at rammeværket vil kryptere sessionsdata, før det gemmes;
  • filer: Hvis filsessionsdriveren bruges, angiver denne indstilling fillagringsplaceringen;
  • tilslutning: Hvis databasesessionsdriveren bruges, angiver denne indstilling den databaseforbindelse, der skal bruges;
  • bord: Hvis databasesessionsdriveren bruges, angiver denne indstilling den databasetabel, der skal bruges til at gemme sessionsdata;
  • lotteri: En række værdier, der bruges til tilfældigt at vælge en sessions-id-cookieværdi;
  • cookie: Denne indstilling angiver navnet på den cookie, der skal bruges til at gemme sessions-id'et. Indstillingerne for sti, domæne, sikker, http_only og same_site bruges til at konfigurere cookie-indstillingerne for sessionen.

Nedenfor er et eksempel på en fil sessions.php med sessionsvarighed 120 sekunder, brug af filer gemt i mappen 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',

];

Du kan også konfigurere sessionen ved hjælp af miljøvariabler i filen .env. For at bruge databasesessionsdriveren og gemme sessionsdata i en sessionstabel med MySQL-type DB kan du indstille følgende miljøvariabler:

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

Laravel session opsætning

Der er tre måder at arbejde med sessionsdata på i Laravel: 

  • brugerhelper af global session;
  • ved hjælp af Session facaden;
  • gennem en Request instance

I alle disse tilfælde vil de data, du gemmer i sessionen, være tilgængelige i efterfølgende anmodninger fra den samme bruger, indtil sessionen udløber eller manuelt destrueres.

Nyhedsbrev om innovation
Gå ikke glip af de vigtigste nyheder om innovation. Tilmeld dig for at modtage dem via e-mail.

Global sessionshjælper

I Laravel, ved hjælp af funktionen Global Session Helper det er en bekvem måde at få adgang til sessionstjenesterne, der leveres af frameworket. Det giver dig mulighed for at gemme og hente data fra sessionen i din applikation. Her er et eksempel på, hvordan du bruger 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();

Du kan også sende en præværdidefinite som det andet argument til funktionen session, som vil blive returneret, hvis den angivne nøgle ikke findes i sessionen:

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

Forekomst af Session Request

I Laravel refererer en sessionsanmodningsinstans til et objekt, der repræsenterer en HTTP-anmodning og indeholder oplysninger om anmodningen, såsom anmodningsmetoden (GET, POST, PUT osv.), anmodnings-URL, overskrifter på anmodningen og anmodningsteksten . Den indeholder også forskellige metoder, der kan bruges til at hente og manipulere denne information.

Typisk får du adgang til instansen af Session Request gennem variablen $request i en Laravel-applikation. For eksempel kan en session tilgås gennem en anmodningsinstans ved hjælp af hjælpefunktionen 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');
    }
}

I dette eksempel er variablen  $request det er et eksempel på klassen Illuminate\Http\Request, som repræsenterer den aktuelle HTTP-anmodning. Funktionen session request instans returnerer en instans af klassen Illuminate\Session\Store, som giver forskellige funktioner til at arbejde med sessionen.

Ercole Palmeri

Nyhedsbrev om innovation
Gå ikke glip af de vigtigste nyheder om innovation. Tilmeld dig for at modtage dem via e-mail.

Seneste artikler

Veeam har den mest omfattende support til ransomware, fra beskyttelse til respons og gendannelse

Coveware by Veeam vil fortsætte med at levere responstjenester til cyberafpresning. Coveware vil tilbyde kriminaltekniske og afhjælpende funktioner...

23 April 2024

Grøn og digital revolution: Hvordan prædiktiv vedligeholdelse transformerer olie- og gasindustrien

Forudsigende vedligeholdelse revolutionerer olie- og gassektoren med en innovativ og proaktiv tilgang til anlægsstyring...

22 April 2024

Britisk antitrust-tilsynsmyndighed rejser BigTech-alarm over GenAI

Det britiske CMA har udsendt en advarsel om Big Techs adfærd på markedet for kunstig intelligens. Der…

18 April 2024

Casa Green: energirevolution for en bæredygtig fremtid i Italien

Dekretet om "grønne huse", der er formuleret af Den Europæiske Union for at øge bygningers energieffektivitet, har afsluttet sin lovgivningsproces med...

18 April 2024