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’è.

Serializzazione della sessione

Nello scheletro applicativo di Laravel 13, config/session.php imposta serialization a json. Il default interno del framework rimane però php.
Cambiare questo valore da php a json invalida tutte le sessioni utente attive. Può inoltre causare errori se la sessione memorizza oggetti PHP.
Per mantenere le sessioni attive durante l’upgrade, imposta esplicitamente php. Se l’applicazione non memorizza oggetti PHP nella sessione e sei disposto a chiedere agli utenti di autenticarsi di nuovo, puoi usare json per una maggiore sicurezza.

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 21 agosto 2026