Skip to main content

Cos’è una sessione

HTTP è un protocollo stateless. HTTP di per sé non ha meccanismi per mantenere le informazioni utente tra le richieste. La sessione di Laravel offre un modo per mantenere i dati dell’utente attraverso più richieste. Nella sessione salvi informazioni che vuoi mantenere tra le richieste: stato di login, articoli nel carrello, dati parziali di un form.

Configurazione del driver di sessione

Le impostazioni della sessione sono in config/session.php. Puoi cambiare il driver tramite la variabile d’ambiente SESSION_DRIVER (file .env).
I driver supportati di serie da Laravel sono:
Nel progetto Laravel di default è configurato il driver database. Con database serve la tabella sessions, già inclusa nelle migration predefinite: puoi usarla così com’è.

Come accedere alla sessione

Puoi accedere alla sessione in due modi: tramite i metodi dell’istanza Request o tramite l’helper globale session().

Usando l’istanza Request

Ricevi Request come type hint nel metodo del controller e accedi con $request->session().

Usando l’helper globale session()

L’helper session() puoi chiamarlo da controller, viste o ovunque.
In entrambi i casi puoi verificare nei test con assertSessionHas. Nei controller usare $request->session() rende esplicite le dipendenze.

Operazioni sulla sessione

Lettura dei dati

Verifica dell’esistenza

Fai attenzione alla differenza tra has ed exists.

Scrittura dei dati

Rimozione dei dati

Dati flash

I dati flash sono dati di sessione validi solo per la richiesta successiva. Sono adatti a informazioni da mostrare una sola volta, come un messaggio di successo o un errore di form.

Salvare dati con flash()

Puoi leggere il dato nella richiesta successiva; dopodiché viene rimosso automaticamente.

Estendere i dati flash

Mostrare messaggi flash in Blade

Metti la visualizzazione dei messaggi flash nel file di layout (come layouts/app.blade.php): compariranno in modo uniforme su tutte le pagine.

Esempio pratico: messaggi dopo l’invio di un form

Salvare un messaggio di successo in sessione e reindirizzare per mostrarlo nella pagina successiva è un pattern classico delle app web.
1

Definizione delle route

2

Implementazione del controller

Nel metodo store che riceve il form, dopo il salvataggio reindirizza con un messaggio di successo.
redirect()->with('success', '...') è la scorciatoia per passare dati flash alla destinazione del redirect.
3

Mostra il messaggio nel layout

Aggiungi la parte di visualizzazione dei messaggi flash a resources/views/layouts/app.blade.php.
4

Crea la vista dell'elenco

Dopo il salvataggio e il redirect, in cima all’elenco compare una sola volta il messaggio “Post creato.”.

Pattern combinato con errori di validazione

In caso di validazione fallita si combina back()->withErrors(). Laravel salva automaticamente gli errori come dati flash, così in Blade puoi usare la variabile $errors.
flush() elimina tutti i dati di sessione, incluso lo stato di login. Se vuoi eliminare solo i dati utente, usa forget() indicando le chiavi specifiche.

Prossimi passi

Validazione

Rivedi come validare i dati di input dei form.
Ultima modifica il 13 luglio 2026