Skip to main content

Cos’è Fortify

Laravel Fortify è un’implementazione backend di autenticazione indipendente dal frontend. Fornisce tutte le rotte e i controller necessari per login, registrazione, reset della password, verifica email, 2FA e passkey.
Fortify non ha una UI. Funziona quando starter kit o UI personalizzate inviano richieste alle sue rotte.
Il concetto chiave del design è “indipendente dal frontend”. Puoi riutilizzare lo stesso backend di autenticazione con Blade, Inertia (React/Vue/Svelte) o API. È il motivo per cui Fortify è tuttora in uso da anni.

Storia: da Jetstream agli starter kit attuali

Perché Fortify è usato anche negli starter kit attuali

Inizialmente gli starter kit React/Vue erano implementati senza Fortify. Ma quando è stato necessario supportare l’autenticazione a due fattori (2FA), Fortify è stato adottato così com’era, portando l’intera autenticazione a basarsi su Fortify. Essendo progettato “frontend-agnostic”, Fortify va d’accordo con gli starter kit basati su Inertia ed è ancora oggi in uso.
Fortify è attualmente il pacchetto ufficiale di autenticazione di Laravel usato da più tempo. Dal debutto nel 2020, tra Jetstream e gli starter kit attuali ha continuato a cambiare forma restando in servizio.

Configurazione degli starter kit attuali

Negli starter kit React/Vue, Fortify è configurato nei seguenti file.
  • app/Providers/FortifyServiceProvider.php — registrazione di view, action e rate limit
  • config/fortify.php — funzionalità abilitate e impostazioni di autenticazione

Impostazioni principali di config/fortify.php

Negli starter kit le passkey (Features::passkeys()) non sono abilitate di default. Per abilitarle le aggiungi all’array features.

Configurazione di FortifyServiceProvider

Il FortifyServiceProvider degli starter kit ha tre ruoli.

1. Configurazione delle action

Le classi in app/Actions/Fortify/ personalizzano la logica di creazione utente e reset password. Qui sono concentrate validazione e hashing.

2. Configurazione delle view

Ogni view method riceve una closure che restituisce un componente Inertia. Il punto chiave è controllare i feature flag con Features::enabled() e passarli alla view.
In un’app Blade, al posto di Inertia::render(...) restituisci view('auth.login'). Cambiando frontend basta modificare solo FortifyServiceProvider: la logica di autenticazione non cambia.

3. Configurazione del rate limiting

  • Limiter login: limita per combinazione email + indirizzo IP (protezione da brute force)
  • Limiter two-factor: limita per ID del tentativo di login in sessione
Le chiavi registrate in RateLimiter::for() devono coincidere con quelle di limiters in config/fortify.php.

Funzionalità principali e rotte registrate

Le rotte principali registrate da Fortify, per funzionalità. Con php artisan route:list --name=fortify o semplicemente php artisan route:list verifichi le rotte effettivamente registrate.

Autenticazione a due fattori (2FA)

Negli starter kit Features::twoFactorAuthentication() è abilitata. Sia confirm che confirmPassword sono impostati a true. Dalla schermata di configurazione 2FA l’utente può:
1

Abilitare 2FA

Invia una POST a /user/two-factor-authentication. In caso di successo, la sessione ottiene lo status two-factor-authentication-enabled.
2

Vedere il QR code

Con una GET a /user/two-factor-qr-code ottieni l’SVG del QR code da scansionare con l’app di autenticazione.
3

Confermare con il codice di autenticazione

Invia il codice via POST a /user/confirmed-two-factor-authentication per completare l’impostazione.
4

Salvare i codici di recupero

Con una GET a /user/two-factor-recovery-codes ottieni i codici di recupero: salvali in un luogo sicuro.

Passkey

Le passkey sono state aggiunte a Fortify di recente. Sono un’autenticazione senza password basata su WebAuthn e supportano Face ID, Touch ID, Windows Hello e chiavi hardware.

Abilitazione

Aggiungi la voce all’array features di config/fortify.php.
Poi aggiungi al modello User il contract PasskeyUser e il trait PasskeyAuthenticatable.
Le impostazioni WebAuthn si gestiscono con la chiave passkeys di config/fortify.php.
Le passkey di Fortify avvolgono internamente il pacchetto Composer laravel/passkeys. Non è necessario pubblicare il file di configurazione di laravel/passkeys: prevale la chiave passkeys di config/fortify.php.
Per l’implementazione dettagliata delle passkey (client JS @laravel/passkeys, helper React/Vue/Svelte, ecc.) consulta anche Analisi iniziale delle passkey.

Pagine correlate

Guard di autenticazione personalizzato

Come creare un guard di autenticazione personalizzato implementando le interfacce Guard e StatefulGuard.

Documentazione ufficiale: Laravel Fortify

Per l’installazione, tutte le funzionalità e le personalizzazioni consulta la documentazione ufficiale.
Ultima modifica il 13 luglio 2026