Vai al contenuto principale

Cos’è l’autenticazione

L’autenticazione è il meccanismo che verifica “chi è” l’utente che accede. Nelle applicazioni web, riceviamo email e password da un form di login e, se corretti, salviamo le informazioni dell’utente nella sessione. Nelle richieste successive si identifica l’utente consultando quella sessione. Le funzionalità di autenticazione di Laravel sono composte da due concetti: le “guard” e i “provider”.
  • Guard: definiscono come autenticare l’utente in ciascuna richiesta. Quella predefinita è la guard session, che gestisce lo stato con sessione e cookie.
  • Provider: definiscono come recuperare l’utente dal database. Quello predefinito usa Eloquent.
Il file di configurazione dell’autenticazione è config/auth.php. Le impostazioni predefinite sono adatte alla maggior parte delle applicazioni web.

Autenticazione tramite starter kit

In Laravel, scegliendo semplicemente uno starter kit quando crei l’applicazione con laravel new, vengono costruite automaticamente le funzionalità di login, registrazione, reset password e altre. È l’approccio più consigliato.
1

Crea l'applicazione

Crea l’applicazione con l’installer di Laravel. Durante il processo viene mostrato un prompt per selezionare lo starter kit.
laravel new my-app
Puoi scegliere tra React, Vue, Livewire e Svelte come starter kit. Scegli in base allo stack tecnologico del team.
2

Installa le dipendenze frontend

cd my-app
npm install && npm run build
3

Prepara il database

Verifica le impostazioni del database nel file .env ed esegui le migration.
php artisan migrate
Vengono applicate le migration iniziali, inclusa la tabella users.
4

Avvia il server di sviluppo

composer run dev
Aprendo http://localhost:8000 nel browser, nella navigazione appariranno i link “Register” e “Log in”. Visita /register e registra un utente di prova.
Con uno starter kit sono immediatamente disponibili queste funzionalità.
FunzionalitàURL
Registrazione utente/register
Login/login
Reset password/forgot-password
Verifica email/email/verify
Modifica profilo/settings/profile
Il codice generato dallo starter kit (controller, route, viste) risiede tutto nella tua applicazione. Puoi modificarlo e personalizzarlo liberamente.

Starter kit disponibili

React

Puoi costruire SPA moderne con React 19, TypeScript, Tailwind e shadcn/ui. Grazie a Inertia, sfrutti il frontend React mantenendo il routing lato server.

Vue

Utilizza Vue Composition API, TypeScript, Tailwind e shadcn-vue. Come React, si integra con il server tramite Inertia.

Livewire

Usa Livewire per costruire UI dinamiche solo in PHP. Ideale per team che lavorano principalmente con i template Blade o che vogliono evitare framework JavaScript. Include la libreria di componenti Flux UI.

Svelte

Usa Svelte 5, TypeScript, Tailwind e shadcn-svelte. Costruisci SPA moderne combinandolo con Inertia.

Facade Auth

Con la facade Auth puoi ottenere le informazioni dell’utente attualmente autenticato o verificarne lo stato.

Ottenere l’utente autenticato

use Illuminate\Support\Facades\Auth;

// Ottieni l'utente corrente
$user = Auth::user();

// Ottieni solo l'ID dell'utente
$id = Auth::id();
Nei controller puoi ottenere l’utente anche dall’oggetto Request.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index(Request $request)
    {
        $user = $request->user();

        return view('dashboard', ['user' => $user]);
    }
}

Verifica dello stato di autenticazione

Auth::check() restituisce true / false a seconda che l’utente sia autenticato.
use Illuminate\Support\Facades\Auth;

if (Auth::check()) {
    // Autenticato
} else {
    // Non autenticato
}
Nei template Blade le direttive @auth e @guest sono comode.
@auth
    <p>Ciao, {{ Auth::user()->name }}</p>
    <a href="/logout">Logout</a>
@endauth

@guest
    <a href="/login">Login</a>
    <a href="/register">Registrati</a>
@endguest

Protezione delle route

Per creare route accessibili solo agli utenti autenticati usa il middleware auth.
// routes/web.php

// Accessibile solo agli utenti autenticati
Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware('auth');
Gli utenti non autenticati vengono reindirizzati automaticamente a /login. Per proteggere più route in blocco usa un gruppo.
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/profile', [ProfileController::class, 'show']);
    Route::get('/settings', [SettingsController::class, 'index']);
});
Se dimentichi il middleware auth, gli utenti non autenticati potranno accedere. Applicalo sempre alle route da proteggere.

Route solo per ospiti

Per reindirizzare gli utenti autenticati usa il middleware guest. Applicandolo alle pagine di login e registrazione, gli utenti già autenticati vengono inviati alla dashboard.
Route::middleware('guest')->group(function () {
    Route::get('/login', [AuthController::class, 'showLogin']);
    Route::get('/register', [AuthController::class, 'showRegister']);
});

Autenticazione manuale

Per implementare il login manualmente, senza starter kit, usa Auth::attempt().
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    public function login(Request $request): RedirectResponse
    {
        $credentials = $request->validate([
            'email' => ['required', 'email'],
            'password' => ['required'],
        ]);

        if (Auth::attempt($credentials)) {
            // Autenticazione riuscita — rigenera la sessione per prevenire attacchi CSRF
            $request->session()->regenerate();

            return redirect()->intended('/dashboard');
        }

        // Autenticazione fallita
        return back()->withErrors([
            'email' => 'Email o password non corretti.',
        ])->onlyInput('email');
    }
}
Passi le credenziali come primo argomento di Auth::attempt(). La password viene confrontata automaticamente con l’hash, quindi passala in chiaro. Per implementare la funzione “ricordami”, passa true come secondo argomento.
// Usa il valore della checkbox "ricordami"
Auth::attempt($credentials, $request->boolean('remember'));
Anche implementando l’autenticazione manualmente, ti consiglio di ispirarti al codice degli starter kit. Sono ottimi esempi di implementazione sicura.

Logout

Per disconnettere l’utente chiama Auth::logout(). La best practice è invalidare anche la sessione e rigenerare il token CSRF.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;

class LogoutController extends Controller
{
    public function logout(Request $request): RedirectResponse
    {
        Auth::logout();

        // Invalida la sessione
        $request->session()->invalidate();

        // Rigenera il token CSRF
        $request->session()->regenerateToken();

        return redirect('/');
    }
}
Usa il metodo POST per la route.
Route::post('/logout', [LogoutController::class, 'logout'])->middleware('auth');
Nel template Blade invia la richiesta POST tramite un form.
<form method="POST" action="/logout">
    @csrf
    <button type="submit">Logout</button>
</form>
ObiettivoMetodo
Aggiungere velocemente l’autenticazioneStarter kit (laravel new)
Ottenere l’utente correnteAuth::user() / $request->user()
Verificare lo stato di loginAuth::check()
Proteggere una route->middleware('auth')
Effettuare il login manualmenteAuth::attempt($credentials)
Effettuare il logoutAuth::logout()

Prossimi passi

Middleware

Impara nel dettaglio come funziona il middleware auth e come creare middleware personalizzati.
Ultima modifica il 13 luglio 2026