Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestione Utenti in Laravel

Analizziamo le modalità con le quali Laravel gestisce le procedure di autenticazione e autorizzazione delle applicazioni Web
Analizziamo le modalità con le quali Laravel gestisce le procedure di autenticazione e autorizzazione delle applicazioni Web
Link copiato negli appunti

Laravel presenta anche un modulo per la gestione dell'autenticazione e autorizzazione delle applicazioni Web. Il framework include automaticamente tra i modelli disponibili la classe User che rappresenta, grazie ad alcuni traits disponibili nel framework, l'entità che si occuperà di rappresentare gli utenti che potranno loggarsi al sito.

All'interno del file config/auth.php saranno invece disponibili una serie di configurazioni per modificare il flusso di default del framework. Come impostazione predefinita Laravel sfrutta un'autenticazione basata su database e su Eloquent, ma è possibile modificarne il comportamento sia ignorando l'ORM sia non utilizzando del tutto il database.

All'interno di questo e del prossimo articolo utilizzeremo il pattern standard offerto dal framework. Oltre al modello Laravel ci mette a disposizione anche due migration per il setup delle tabelle richieste (users e password_resets).

Controller out-of-the-box

All'interno della codebase di Laravel, sono presenti due controller dedicati alla gestione utente e disponibili nella cartella app/controllers/auth:

Controller Descrizione
app\Http\Controllers\Auth\AuthController Dedicato ad autenticazione e nuove registrazioni.
app\Http\Controllers\Auth\PasswordController Dedicato al reset della password per utenti già registrati.

L'approccio offerto da Laravel allo sviluppatore è quello di rendere disponibili le principali logiche già implementate (comunque configurabili) ma di lasciare a lui la definizione delle rotte e le view (che dipendono strettamente dalle logiche di business).

I metodi offerti dal framework sono questi:

Metodo Descrizione
AuthController@getLogin Creazione e visualizzazione della form di login, carica in automatico la view auth.login.
AuthController@postLogin Validazione e eventuale procedura di login.
AuthController@getLogout Logout.
AuthController@getRegister Creazione e visualizzazione della form di registrazione, carica in automatico la view auth.register.
AuthController@getLogout Validazione e eventuale registrazione di un nuovo utente.
PasswordController@getEmail Creazione e visualizzazion del form "ricorda password", carica in automatico la view auth.password.
PasswordController@postEmail Validazione e invio della mail contenente un link con token partendo dalla view emails.password.
Auth\PasswordController@getReset Validazione del token ricevuto via mail e visualizzazione del form di reset password, carica in automatico la view auth.reset.
Auth\PasswordController@postReset Validazione e modifica della password.

Configurazioni addizionali

Come anticipato, l'approccio del framework è quello di offrire logiche già implementate ma fortemente configurabili tramite property dedicate all'interno dell'AuthController.

Quando un utente è autenticato con successo, il framework lo redirigerà all'URL /home ma nel caso questo URL non fosse compatibile con la nostra applicazione possiamo impostare la variabile $redirectPath. Viceversa, in caso di errore durante il processo di autenticazione verrà caricato l'URL /auth/login o eventualmente il valore della proprietà $loginPath.

Oltre a poter configurare gli URL, all'interno di AuthController è possibile implementare nuovamente alcuni metodi, lasciati apposta a livello di applicazione:

Metodo Descrizione
validator Permette di modificare le regole di validazione del form di registrazione.
create Permette di implementare una nuova logica per inserire il record nel database.

Entrambi i metodi vengono utilizzati nel caso in cui in fase di registrazione vengano chiesti ulteriori dati agli utenti (per esempio indirizzo, avatar..).

La facade Auth

Oltre ai controller descritti, Laravel presenta anche una facade dedicata a tutte le funzionalità legate all'autenticazione.

Grazie al metodo attempt è possibile autenticare manualmente un utente passando email e password a prescindere dall'AuthController. Questo metodo è utile nel caso si creino link di autologin o possibilità di impersonificare un utente da parte di un amministratore. Oltre ad attempt è possibile utilizzare il metodo login che riceve direttamente un oggetto User come parametro o loginUsingId che richiede l'id dell'utente oppure once che permette di autenticare l'utente solamente per la richiesta successiva, utile in caso di API stateless che non sfruttino la sessione HTTP.

Nel prossimo articolo implementeremo questo pattern all'interno di Biblios.

Ti consigliamo anche