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

Fremtiden er her: Hvordan shippingindustrien revolutionerer den globale økonomi

Flådesektoren er en sand global økonomisk magt, som har navigeret mod et 150 milliarder marked...

1 maj 2024

Udgivere og OpenAI underskriver aftaler for at regulere strømmen af ​​information, der behandles af kunstig intelligens

Sidste mandag offentliggjorde Financial Times en aftale med OpenAI. FT licenserer sin verdensklasses journalistik...

30 April 2024

Onlinebetalinger: Her er hvordan streamingtjenester får dig til at betale for evigt

Millioner af mennesker betaler for streamingtjenester og betaler månedlige abonnementsgebyrer. Det er almindelig opfattelse, at du...

29 April 2024

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