Skip to main content

Wat is Fortify?

Laravel Fortify is een frontend-onafhankelijke implementatie van een authenticatiebackend. Het biedt alle routes en controllers die nodig zijn voor inloggen, registreren, wachtwoordherstel, e-mailverificatie, 2FA en passkeys.
Fortify heeft geen UI. Het werkt doordat starter kits of je eigen UI requests sturen naar de routes van Fortify.
De ontwerpfilosofie van “frontend-onafhankelijkheid” is belangrijk. Of het nu Blade, Inertia (React/Vue/Svelte) of een API is: dezelfde authenticatiebackend is met elke frontendstack herbruikbaar. Dat is de reden dat Fortify al zo lang wordt gebruikt.

Geschiedenis: van Jetstream tot de huidige starter kits

Waarom gebruiken de huidige starter kits nog steeds Fortify?

De oorspronkelijke React/Vue starter kits waren geïmplementeerd zonder Fortify. Maar toen ondersteuning voor tweefactorauthenticatie (2FA) nodig werd, is Fortify direct geadopteerd, waardoor de hele authenticatie is overgegaan op een Fortify-basis. Omdat Fortify is ontworpen als “frontend-onafhankelijk”, past het goed bij starter kits die Inertia gebruiken, en wordt het nog steeds gebruikt.
Fortify is momenteel het langst gebruikte officiële authenticatiepackage van Laravel. Sinds de introductie in 2020 is het actief gebleven, in wisselende vorm: van Jetstream tot de huidige starter kits.

Opbouw van de huidige starter kits

In de React/Vue starter kits wordt Fortify geconfigureerd in de volgende bestanden:
  • app/Providers/FortifyServiceProvider.php — registratie van views, actions en rate limiting
  • config/fortify.php — de in te schakelen functies en authenticatie-instellingen

De belangrijkste instellingen in config/fortify.php

In de starter kits zijn passkeys (Features::passkeys()) standaard niet ingeschakeld. Om ze in te schakelen voeg je ze toe aan de features-array.

Configuratie van de FortifyServiceProvider

De FortifyServiceProvider van de starter kits vervult drie rollen.

1. Configuratie van actions

Met de klassen in app/Actions/Fortify/ pas je de logica voor het aanmaken van gebruikers en wachtwoordherstel aan. Validatie en hashing zijn hier gebundeld.

2. Configuratie van views

Elke viewmethode ontvangt een closure die een Inertia-component teruggeeft. Het punt om te onthouden: met Features::enabled() worden de feature flags gecontroleerd en aan de view doorgegeven.
In een Blade-app geef je in plaats van Inertia::render(...) een view('auth.login') terug. Wissel je van frontend, dan hoef je alleen de FortifyServiceProvider aan te passen en blijft de authenticatielogica ongewijzigd.

3. Configuratie van rate limiting

  • De login-limiter: beperkt op de combinatie van e-mailadres en IP-adres (bescherming tegen brute force)
  • De two-factor-limiter: beperkt op het inlogpoging-ID in de sessie
Je registreert bij RateLimiter::for() sleutels die overeenkomen met de limiters-sleutel in config/fortify.php.

Belangrijkste functies en de geregistreerde routes

De belangrijkste routes die Fortify registreert, geordend per functie: Met php artisan route:list --name=fortify of gewoon php artisan route:list bekijk je de daadwerkelijk geregistreerde routes.

Tweefactorauthenticatie (2FA)

In de starter kits is Features::twoFactorAuthentication() ingeschakeld. Zowel confirm als confirmPassword staat op true. Vanuit het 2FA-instellingenscherm kan de gebruiker het volgende doen:
1

2FA inschakelen

Stuur een POST-request naar /user/two-factor-authentication. Bij succes wordt de status two-factor-authentication-enabled in de sessie gezet.
2

De QR-code bekijken

Stuur een GET-request naar /user/two-factor-qr-code; je krijgt de SVG van de QR-code terug om in te lezen in een authenticator-app.
3

Bevestigen met een authenticatiecode

Stuur de code via een POST-request naar /user/confirmed-two-factor-authentication om de configuratie te voltooien.
4

De herstelcodes opslaan

Stuur een GET-request naar /user/two-factor-recovery-codes, haal de herstelcodes op en bewaar ze op een veilige plek.

Passkeys

Passkeys zijn recent toegevoegd als functie van Fortify. Het is wachtwoordloze authenticatie via WebAuthn, met ondersteuning voor Face ID, Touch ID, Windows Hello en hardwarebeveiligingssleutels.

Inschakelen

Voeg toe aan de features-array in config/fortify.php.
Voeg vervolgens het PasskeyUser-contract en de PasskeyAuthenticatable-trait toe aan het User-model.
De WebAuthn-instellingen beheer je onder de passkeys-sleutel in config/fortify.php.
De passkeys van Fortify wrappen intern het Composer-package laravel/passkeys. Je hoeft het configuratiebestand van laravel/passkeys niet te publiceren; de passkeys-sleutel in config/fortify.php krijgt voorrang.
Voor de gedetailleerde implementatie van passkeys (de @laravel/passkeys JS-client, React/Vue/Svelte-helpers en meer), zie ook Eerste verkenning van passkeys.

Gerelateerde pagina’s

Custom authenticatieguards

Uitleg over het bouwen van een custom authenticatieguard door de interfaces Guard en StatefulGuard te implementeren.

Officiële documentatie: Laravel Fortify

Zie de officiële documentatie voor installatie, alle functies en aanpassingsmogelijkheden.
Laatst gewijzigd op 6 september 2026