Skip to main content

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 in config/session.php. Met de omgevingsvariabele SESSION_DRIVER (in het .env-bestand) wissel je van driver.
Laravel ondersteunt standaard de volgende drivers.
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 staat serialization in config/session.php ingesteld op json. De interne standaard van het framework blijft php.
Wijzig je van php naar json, dan worden alle sessies van actieve gebruikers ongeldig. Sla je PHP-objecten op in de sessie, dan kunnen er bovendien fouten optreden.
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 de Request-instantie en via de globale helper session().

Via de Request-instantie

Ontvang een Request 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.
Bij beide manieren kun je in tests verifiëren met de methode assertSessionHas. In controllers maakt $request->session() de afhankelijkheden expliciet en dus overzichtelijker.

Met de sessie werken

Data ophalen

Controleren of data bestaat

Let op het verschil tussen 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()

Deze data is beschikbaar tijdens het volgende request en wordt daarna automatisch verwijderd.

Flash-data verlengen

Flash-berichten tonen in Blade

Zet de weergave van flash-berichten in je layoutbestand (bijvoorbeeld layouts/app.blade.php), dan worden ze consistent op alle pagina’s getoond.

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

Nadat de post is opgeslagen en je bent geredirect, verschijnt bovenaan deze overzichtspagina eenmalig het bericht “De post is aangemaakt.”.

Patroon in combinatie met validatiefouten

Bij een mislukte validatie combineer je dit met back()->withErrors(). Laravel bewaart bij een mislukte validatie de fouten automatisch als flash-data, zodat je in Blade de variabele $errors kunt gebruiken.
flush() verwijdert alle data uit de sessie. Ook de inlogstatus gaat dan verloren; wil je alleen bepaalde gebruikersdata verwijderen, geef dan met forget() specifieke sleutels op.

Volgende stap

Validatie

Bekijk hoe je formulierinvoer valideert.
Laatst gewijzigd op 6 september 2026