Création d'une classe middleware simple

Création d'une classe middleware simple

Problème

Vous voulez ajouter du middleware à votre application, mais je ne sais pas par où commencer.

Solution

Créer une classe middleware simple.

Étape 1 - Créez la classe

Utiliser Symfony \ Component \ httpFoundation \ request;
Utiliser Symfony \ Component \ HttpFoundation \ Response;
Utilisez Symfony \ Component \ httpkernel \ httpkerneLinterface;
classe Middleware implémente httpkerneLinterface
Application $ protégé;
/ **
* Constructeur
* /
Fonction publique __construct (httpkerneLinterface $ app)

$ this-> app = $ app;

/ **
* Gérer la demande, retourner la réponse
*
* @Implements httpkerneLinterface ::
*
* @param \ symfony \ composant \ httpfoundation \ request $ request
* @param int $ type
* @param bool $ catch
* @return \ symfony \ composant \ httpfoundation \ réponse
* /
Poignée de la fonction publique (demande $ demande,
$ type = httpkerneLinterface :: Master_Request, $ catch = true)

// 1) Modifier la demande entrante si nécessaire

// 2) enchaîner le gestionnaire d'applications pour obtenir la réponse
$ réponse = $ this-> app-> manche ($ request, $ type, $ catch);
// 3) Modifier la réponse si nécessaire

// 4) Renvoyez la réponse
retour $ réponse;


?>

Étape 2 - Enregistrez la classe de middleware

Vous devez le faire dans la méthode Register () d'un fournisseur de services.

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

Vous pouvez également installer un package simple que j'ai créé qui vous permet d'enregistrer votre middleware dans application / démarrage / pré-boot.php. Voir Laravel-Hooks pour plus de détails.

Discussion

La classe ci-dessus ne fait rien.

Mais c'est un bon squelette pour commencer. De toute évidence, vous devrez modifier l'espace de noms et le nom de classe pour s'adapter à votre application.

Alors vous voudrez peut-être essayer de journaliser quelque chose pour vous assurer que cela fonctionne. Vous pouvez mettre à jour la méthode Handle () de votre classe comme spécifié ci-dessous.

// à l'étape n ° 1) Modifiez la demande entrante si nécessaire
// connecte à un fichier. Depuis l'application / start / global.PHP n'a pas été touché
// Pourtant, la façade du journal n'est pas encore définie sur un fichier. Donc juste
// Écrivez directement dans un fichier.
$ logfile = Storage_Path ().'/ Logs / Laravel.enregistrer';
error_log ("Middleware Entry \ n", 3, $ logfile);
// à l'étape # 3) Modifier la réponse si nécessaire
// connecte à un fichier. Nous sommes en sécurité d'utiliser la façade en rondins maintenant que
// il devrait être configuré dans l'application / start / global.php
Log :: info ("middleware sort");

Vous pouvez maintenant examiner votre application / stockage / journaux / laravel.enregistrer fichier pour voir que votre middleware fonctionne.