Introduzione
Il reset della password è un flusso di autenticazione fondamentale nelle applicazioni web. Con uno starter kit la funzionalità viene costruita automaticamente, ma nei progetti solo-API o con UI personalizzata serve l’implementazione manuale. Casi in cui serve l’implementazione manuale:- Backend solo-API (con frontend SPA o app mobile)
- Se costruisci autonomamente l’UI di autenticazione senza starter kit
- Se vuoi personalizzare completamente la notifica email o il design dell’URL di reset
Se hai creato il progetto con uno starter kit (
laravel new) il reset password è già implementato. Questa pagina descrive come implementarlo senza starter kit.Configurazione
Configura il reset password nella chiavepasswords di config/auth.php.
driver— modalità di salvataggio dati (databaseocache)expire— validità del token in minuti. Default 60 minutithrottle— tempo di attesa (in secondi) prima di consentire un nuovo invio
Driver
Driver database
È il driver predefinito. Salva il token di reset nella tabellapassword_reset_tokens del database. Questa tabella è inclusa nelle migration predefinite di Laravel (0001_01_01_000000_create_users_table.php).
Driver cache
Il drivercache salva il token nel cache store. Non serve la migration di password_reset_tokens. Il token è indicizzato usando l’email come chiave, quindi assicurati di non usare la stessa email come chiave di cache altrove nell’app.
store eviti che php artisan cache:clear elimini i dati di reset. Il valore deve corrispondere al nome dello store configurato in config/cache.php.
Preparazione del modello
Per usare il reset password, il modelloApp\Models\User deve avere due trait.
Notifiable— necessario per inviare notifiche emailCanResetPassword— fornisce i metodi per generare e verificare i token di reset
Il modello
User predefinito di Laravel include già questi trait. Nelle nuove installazioni non serve aggiungerli.Implementazione delle route
Per il reset password servono 4 route.1. Form di richiesta del link di reset
Mostra un form per inserire l’email.2. Invio del link di reset
Riceve il form e invia l’email conPassword::sendResetLink().
Password::sendResetLink() restituisce una stringa di stato.
3. Form di reset password
Mostra un form per inserire la nuova password quando l’utente clicca il link nell’email.4. Elaborazione del reset
Riceve il form e aggiorna la password conPassword::reset().
Password::reset():
Scadenza del token
Con l’opzioneexpire di config/auth.php imposti la validità del token in minuti. Default 60.
database, i token scaduti restano nel DB. Per pulirli periodicamente usa il comando Artisan:
Personalizzazione
Uso di una notifica personalizzata
Per personalizzare l’email di reset, sovrascrivi il metodosendPasswordResetNotification sul modello User.
Personalizzazione dell’URL del link di reset
Nel metodoboot di AppServiceProvider, con ResetPassword::createUrlUsing() puoi cambiare l’URL del link di reset. Utile per reindirizzare a un frontend su un’altra origin (SPA).
Impostazione dei trusted host
L’URL del link di reset viene generato usando l’headerHost della richiesta HTTP. Per prevenire richieste da host non validi, si consiglia di configurare i trusted host in bootstrap/app.php.
Riepilogo
Prossimi passi
Introduzione all'autenticazione
Impara il funzionamento generale del sistema di autenticazione di Laravel.
Notifiche
Approfondisci la personalizzazione delle notifiche email.