Laravel - Middleware: Il Tuo Portale per la Gestione delle Richieste

Ciao a tutti, futuri sviluppatori Laravel! Oggi esploreremo il mondo affascinante dei Middleware di Laravel. Pensa ai middleware come a una guardia di sicurezza utile per la tua applicazione - controllano e processano le richieste prima che raggiungano la logica principale della tua applicazione. Insieme intraprendiamo questo viaggio entusiasmante!

Laravel - Middleware

Cos'è un Middleware?

Prima di immergerci nel codice, capiremo cos'è un middleware. Immagina di organizzare una festa (la tua applicazione) e di avere un controllore (middleware) alla porta. Questo controllore può:

  1. Controllare se le persone sono nella lista degli invitati (autenticazione)
  2. Assicurarsi che siano vestiti in modo appropriato (validazione)
  3. Dar loro un braccialetto (aggiungere informazioni alla richiesta)
  4. O persino rifiutarli (interrompere la richiesta)

Questo è esattamente ciò che fanno i middleware per la tua applicazione Laravel!

Registração di Middleware

Ora vediamo come possiamo creare e registrare i nostri middleware.

Creazione di Middleware

Prima, creeremo un middleware semplice che controlla se un utente ha più di 18 anni:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}

return $next($request);
}
}

In questo esempio, il nostro middleware CheckAge controlla se il parametro age nella richiesta è maggiore di 18. Se non lo è, reindirizza alla pagina iniziale. Altrimenti, passa la richiesta al middleware successivo o all'applicazione principale.

Registração di Middleware Globale

Per utilizzare questo middleware globalmente (per tutte le rotte), dobbiamo registrarlo nel file app/Http/Kernel.php:

protected $middleware = [
// ...
\App\Http\Middleware\CheckAge::class,
];

Registração di Middleware per Rotte Specifiche

Se vuoi utilizzare il middleware solo per rotte specifiche, puoi registrarlo come middleware di rotta:

protected $routeMiddleware = [
// ...
'checkage' => \App\Http\Middleware\CheckAge::class,
];

Poi, puoi utilizzarlo nelle tue rotte così:

Route::get('adult-only', function () {
//
})->middleware('checkage');

Parametri di Middleware

A volte, vogliamo che il nostro middleware sia più flessibile. Ecco dove entrano in gioco i parametri del middleware!

Modifichiamo il nostro middleware CheckAge per accettare un parametro di età minima:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
public function handle($request, Closure $next, $minAge)
{
if ($request->age <= $minAge) {
return redirect('home');
}

return $next($request);
}
}

Ora possiamo utilizzare questo middleware con diversi limiti di età:

Route::get('adult-only', function () {
//
})->middleware('checkage:18');

Route::get('senior-only', function () {
//
})->middleware('checkage:65');

Non è fantastico? Abbiamo reso il nostro middleware riutilizzabile per diverse situazioni!

Middleware Terminabile

A volte, vogliamo che il nostro middleware faccia qualcosa dopo che la risposta è stata inviata al browser. Ecco dove entra in gioco il middleware terminabile!

Creiamo un middleware che 注册 la durata della risposta:

<?php

namespace App\Http\Middleware;

use Closure;

class LogResponseTime
{
public function handle($request, Closure $next)
{
$request->start_time = microtime(true);

return $next($request);
}

public function terminate($request, $response)
{
$duration = microtime(true) - $request->start_time;
\Log::info('Tempo di risposta: ' . $duration . ' secondi');
}
}

Questo middleware aggiunge un start_time alla richiesta, poi 注册 la durata totale della risposta dopo che la risposta è stata inviata.

Per utilizzare il middleware terminabile, assicurati che sia registrato nel tuo file app/Http/Kernel.php:

protected $middleware = [
// ...
\App\Http\Middleware\LogResponseTime::class,
];

Metodi del Middleware

Ecco una tabella dei principali metodi che utilizzerai quando lavorerai con i middleware:

Metodo Descrizione
handle() La logica principale del middleware. Processa la richiesta e opzionalmente la passa al middleware successivo.
terminate() Eseguito dopo che la risposta è stata inviata al browser. Utilizzato per pulizia o 注册.

Conclusione

Ecco fatto, ragazzi! Abbiamo esplorato il territorio dei Middleware di Laravel, dalla creazione e registrazione dei middleware all'uso di parametri e middleware terminabili. Ricorda, i middleware sono come il coltello svizzero della gestione delle richieste - sono versatili, potenti e uno strumento essenziale nel tuo kit di sviluppo Laravel.

Mentre continui il tuo viaggio con Laravel, troverai innumerevoli modi creativi per utilizzare i middleware. Forse creerai middleware per controllare la modalità di manutenzione, 注册 le richieste o persino trasformare i dati delle richieste. Le possibilità sono infinite!

Continua a programmare, continua ad imparare e, soprattutto, divertiti! Fino alla prossima volta, happy Laravel-ing!

Credits: Image by storyset