Creazione di una semplice classe di middleware

Creazione di una semplice classe di middleware

Problema

Vuoi aggiungere middleware alla tua applicazione ma non sai da dove cominciare.

Soluzione

Crea una semplice classe di middleware.

Passaggio 1: crea la classe

Utilizzare Symfony \ component \ httpfoundation \ request;
Usa Symfony \ component \ httpfoundation \ risposta;
Usa Symfony \ component \ httpkernel \ httpkernelinterface;
Class Middleware implementa httpkernelinterface
APP $ protetta;
/**
* Costruttore
*/
funzione pubblica __construct (httpkernelinterface $ app)

$ this-> app = $ app;

/**
* Gestire la richiesta, restituire la risposta
*
* @implements httpkernelinterface :: handle
*
* @param \ symfony \ component \ httpfoundation \ richiesta $ richiesta
* @param int $ type
* @param bool $ catch
* @return \ symfony \ component \ httpfoundation \ risposta
*/
Handle della funzione pubblica (richiesta $ richiesta,
$ type = httpkernelinterface :: master_request, $ catch = true)

// 1) Modifica la richiesta in arrivo se necessario
..
// 2) incatenare il gestore dell'app per ottenere la risposta
$ Response = $ this-> App-> Handle ($ richiesta, $ type, $ catch);
// 3) Modifica la risposta se necessario
..
// 4) Restituisci la risposta
restituire $ risposta;


?>

Passaggio 2 - Registra la classe middleware

È necessario farlo nel metodo Register () di un fornitore di servizi.

App :: middleware ('myapp \ middleware');

In alternativa puoi installare un semplice pacchetto che ho creato che ti consente di registrare il middleware in App/Start/Preboot.PHP. Vedi i Laravel-Hooks per i dettagli.

Discussione

La classe sopra non fa nulla.

Ma è un buon scheletro per cominciare. Ovviamente, dovrai cambiare lo spazio dei nomi e il nome di classe per adattarsi alla tua applicazione.

Allora potresti voler provare a registrare qualcosa per assicurarti che funzioni. È possibile aggiornare il metodo handle () della tua classe come specificato di seguito.

// nel passaggio n. 1) Modifica la richiesta in arrivo se necessario
// Registra a un file. Dal momento che app/start/globale.PHP non è stato colpito
//ppure la facciata di registro non è ancora impostata su un file. Quindi
// scrivi direttamente a un file.
$ logFile = Storage_path ().'/logs/Laravel.tronco d'albero';
ERROR_LOG ("Middleware Entry \ n", 3, $ logfile);
// nel passaggio n. 3) Modifica la risposta se necessario
// Registra a un file. Siamo sicuri di usare la facciata del registro ora che
// dovrebbe essere impostato in app/start/globale.PHP
Log :: info ("uscita middleware");

Ora puoi esaminare il tuo App/Storage/Logs/Laravel.tronco d'albero file per vedere che il tuo middleware funziona.