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.
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 limitconfig/fortify.php— funzionalità abilitate e impostazioni di autenticazione
Impostazioni principali di config/fortify.php
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
app/Actions/Fortify/ personalizzano la logica di creazione utente e reset password. Qui sono concentrate validazione e hashing.
2. Configurazione delle view
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
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à.| Funzionalità | Metodo | Rotta |
|---|---|---|
| Login | GET | /login |
| Login | POST | /login |
| Logout | POST | /logout |
| Registrazione | GET | /register |
| Registrazione | POST | /register |
| Richiesta reset password | GET / POST | /forgot-password |
| Reset password | GET / POST | /reset-password |
| Verifica email | GET | /email/verify |
| Invio nuovo link di verifica | POST | /email/verification-notification |
| Conferma password | GET / POST | /user/confirm-password |
| Abilitare 2FA | POST | /user/two-factor-authentication |
| Challenge 2FA | GET / POST | /two-factor-challenge |
| Login con passkey | GET / POST | /passkeys/login |
| Gestione passkey | GET / POST / DELETE | /user/passkeys |
php artisan route:list --name=fortify o semplicemente php artisan route:list verifichi le rotte effettivamente registrate.
Autenticazione a due fattori (2FA)
Negli starter kitFeatures::twoFactorAuthentication() è abilitata. Sia confirm che confirmPassword sono impostati a true.
| Opzione | Significato |
|---|---|
confirm | Richiede conferma con codice dopo l’abilitazione |
confirmPassword | Richiede conferma password prima delle modifiche alle impostazioni 2FA |
Abilitare 2FA
Invia una POST a
/user/two-factor-authentication. In caso di successo, la sessione ottiene lo status two-factor-authentication-enabled.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.Confermare con il codice di autenticazione
Invia il codice via POST a
/user/confirmed-two-factor-authentication per completare l’impostazione.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’arrayfeatures di config/fortify.php.
User il contract PasskeyUser e il trait PasskeyAuthenticatable.
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.@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.