Artiklar

Vad är sessioner i Laravel, konfiguration och användning med exempel

Laravel-sessioner låter dig lagra information och utbyta den mellan förfrågningar i din webbapplikation. 

De är ett enkelt sätt att bevara data för den aktuella användaren. Denna handledning ger dig grunderna för att arbeta med sessioner i Laravel.

Vad är Laravel session

I Laravel är en session ett sätt att lagra information, för att korrekt hantera förfrågningar från en användare. När en användare startar en Laravel-applikation startas en session automatiskt för den användaren. Sessionsdata lagras på servern och en liten cookie med en unik identifierare skickas till användarens webbläsare för att identifiera sessionen.

Du kan använda session för att lagra data som du vill använda på flera sidor eller förfrågningar. Du kan till exempel använda sessionen för användarautentisering eller lagra annan information som du vill använda under sessionen i din applikation.

Sessionskonfiguration i Laravel

För att använda sessioner i Laravel måste du först aktivera dem i filen config/session.php av konfiguration. I den här filen är det möjligt att ställa in konfigurationsparametrar relaterade till sessioner. Till exempel sessionens varaktighet, drivrutinen som ska användas för att lagra sessionsdata och lagringsplatsen för sessionsdata. 

Filen har följande konfigurationsalternativ:
  • chaufför: Anger försessionsdrivrutinendefiredo att använda. Laravel stöder flera sessionsdrivrutiner: fil, cookie, databas, apc, memcached, redis, dynamodb och array;
  • livstid: Anger antalet minuter under vilka sessionen måste anses giltig;
  • expire_on_close: Om inställt på sant, kommer sessionen att upphöra när användarens webbläsare stängs;
  • kryptera: true betyder att ramverket kommer att kryptera sessionsdata innan det lagras;
  • filer: Om filsessionsdrivrutinen används anger detta alternativ fillagringsplatsen;
  • anslutning: Om databassessionsdrivrutinen används anger detta alternativ vilken databasanslutning som ska användas;
  • bord: Om databassessionsdrivrutinen används anger detta alternativ vilken databastabell som ska användas för att lagra sessionsdata;
  • lotteri: En matris med värden som används för att slumpmässigt välja ett sessions-ID-cookievärde;
  • kaka: Det här alternativet anger namnet på den cookie som kommer att användas för att lagra sessions-ID. Alternativen för sökväg, domän, säker, http_only och same_site används för att konfigurera cookieinställningarna för sessionen.

Nedan är ett exempel på en fil sessions.php med sessionslängd 120 sekunder, användning av filer lagrade i katalogen 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 också konfigurera sessionen med hjälp av miljövariabler i filen .env. För att till exempel använda databassessionsdrivrutinen och lagra sessionsdata i en sessionstabell, med MySQL-typ DB, kan du ställa in följande miljövariabler:

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

Laravel session setup

Det finns tre sätt att arbeta med sessionsdata i Laravel: 

  • med hjälp avhelper av global session;
  • med hjälp av Session-fasaden;
  • genom en Request instance

I alla dessa fall kommer data du lagrar i sessionen att vara tillgänglig i efterföljande förfrågningar från samma användare tills sessionen löper ut eller förstörs manuellt.

Nyhetsbrev för innovation
Missa inte de viktigaste nyheterna om innovation. Registrera dig för att få dem via e-post.

Global Session Helper

I Laravel, med hjälp av funktionen Global Session Helper det är ett bekvämt sätt att komma åt sessionstjänsterna som tillhandahålls av ramverket. Det låter dig lagra och hämta data från sessionen i din applikation. Här är ett exempel på hur man använder 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 också skicka ett förvärdedefinite som det andra argumentet till funktionen session, som kommer att returneras om den angivna nyckeln inte hittas i sessionen:

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

Instans av Session Request

I Laravel hänvisar en sessionsbegäraninstans till ett objekt som representerar en HTTP-begäran och innehåller information om begäran, såsom förfrågningsmetoden (GET, POST, PUT, etc.), begäran-URL, förfrågans rubriker och förfrågningskroppen . Den innehåller också olika metoder som kan användas för att hämta och manipulera denna information.

Vanligtvis kommer du åt instansen av Session Request genom variabeln $request i en Laravel-applikation. Till exempel kan en session nås genom en begärandeinstans med hjälp av hjälpfunktionen 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 det här exemplet är variabeln  $request det är en instans av klassen Illuminate\Http\Request, som representerar den aktuella HTTP-begäran. Funktionen session request instans returnerar en instans av klassen Illuminate\Session\Store, som ger olika funktioner för att arbeta med sessionen.

Ercole Palmeri

Nyhetsbrev för innovation
Missa inte de viktigaste nyheterna om innovation. Registrera dig för att få dem via e-post.

Articoli recenti

Innovativ intervention i Augmented Reality, med en Apple-tittare på Catania poliklinik

En oftalmoplastikoperation med Apple Vision Pro kommersiella tittare utfördes på Catania Polyclinic...

3 maj 2024

Fördelarna med målarbok för barn - en värld av magi för alla åldrar

Att utveckla finmotorik genom färgläggning förbereder barn för mer komplexa färdigheter som att skriva. Att färglägga…

2 maj 2024

Framtiden är här: Hur sjöfartsindustrin revolutionerar den globala ekonomin

Marinesektorn är en sann global ekonomisk makt, som har navigerat mot en marknad på 150 miljarder...

1 maj 2024

Publishers och OpenAI tecknar avtal för att reglera flödet av information som bearbetas av artificiell intelligens

I måndags tillkännagav Financial Times ett avtal med OpenAI. FT licensierar sin journalistik i världsklass...

30 April 2024