Wat is een sessie
HTTP is een stateless protocol. Dat betekent dat HTTP zelf geen mechanisme heeft om gebruikersinformatie te bewaren over meerdere requests heen. De sessiefunctionaliteit van Laravel biedt een manier om gebruikersdata over meerdere requests te bewaren. In de sessie sla je informatie op die je tussen requests wilt behouden, zoals de inlogstatus, producten in een winkelwagen en tussentijdse formulierinvoer.De sessiedriver instellen
De sessieconfiguratie staat inconfig/session.php.
Met de omgevingsvariabele SESSION_DRIVER (in het .env-bestand) wissel je van driver.
In een standaard Laravel-project is de
database-driver geconfigureerd. Voor de database-driver is een sessions-tabel nodig, maar die zit al in de standaardmigraties, dus je kunt hem meteen gebruiken.Sessieserialisatie
In het applicatieskeleton van Laravel 13 staatserialization in config/session.php ingesteld op json. De interne standaard van het framework blijft php.
Wil je tijdens een upgrade de actieve sessies behouden, stel dan expliciet php in. Sla je geen PHP-objecten op in de sessie en is het geen probleem dat gebruikers opnieuw moeten inloggen, dan kun je voor betere beveiliging json gebruiken.
Toegang tot de sessie
Er zijn twee manieren om de sessie te benaderen: via methoden op deRequest-instantie en via de globale helper session().
Via de Request-instantie
Ontvang eenRequest als typehint in je controllermethode en benader de sessie via $request->session().
Via de globale helper session()
De helperfunctie session() kun je overal aanroepen, in controllers, views enzovoort.
Met de sessie werken
Data ophalen
Controleren of data bestaat
has en exists.
Data opslaan
Data verwijderen
Flash-data
Flash-data is sessiedata die alleen tijdens het volgende request geldig is. Je gebruikt het voor informatie die je maar één keer wilt tonen, zoals een bevestiging na een formulierinzending of een foutmelding.Data opslaan met flash()
Flash-data verlengen
Flash-berichten tonen in Blade
Praktijkvoorbeeld: een bericht tonen na een formulierinzending
Na het versturen van een formulier een succesmelding in de sessie opslaan, redirecten en het bericht op de volgende pagina tonen — een klassiek patroon in webapps.1
Routes definiëren
2
De controller implementeren
In de
store-methode die de formulierinzending ontvangt, redirect je na het opslaan met een succesmelding.redirect()->with('success', '...') is een shortcut om flash-data door te geven aan de redirectbestemming.3
Het bericht tonen in de layout
Voeg het weergavegedeelte voor flash-berichten toe aan
resources/views/layouts/app.blade.php.4
De view voor de overzichtspagina maken
Patroon in combinatie met validatiefouten
Bij een mislukte validatie combineer je dit metback()->withErrors().
Laravel bewaart bij een mislukte validatie de fouten automatisch als flash-data, zodat je in Blade de variabele $errors kunt gebruiken.
Volgende stap
Validatie
Bekijk hoe je formulierinvoer valideert.