Dynamische Middleware für Laravel 5

9

Während Multi-Tenancy-Pakete für Laravel 5 erstellen musste ich herausfinden, wie man Middleware dynamisch aus Code hinzufügt. Im Vergleich zu diese Frage auf SO Ich möchte die Http / Kernel-Definitionen nicht berühren.

Während der Initialisierung der Anwendung überprüfe ich, ob der angeforderte Hostname in der Datenbank bekannt ist und ob dieser Hostname eine Umleitung zu einem primären Hostnamen oder ssl benötigt.

Da Sie das Http/Kernel nicht als Paket verwenden möchten, müssen wir den Dienstanbieter verwenden.

Anforderungen:

  • fügt Middleware dynamisch hinzu, ohne Http / Kernel
  • zu berühren
  • Verwenden Sie den Dienstanbieter und das Antwortobjekt anstelle von "Hacks"
Luceos 11.05.2015, 10:27
quelle

1 Antwort

4

Die Lösung besteht darin, die Middleware im Kernel dynamisch zu registrieren. Schreiben Sie zuerst Ihre Middleware, zum Beispiel:

%Vor%

Verwenden Sie jetzt in Ihrem Dienstanbieter den folgenden Code in der Methode boot() , um diese Middleware zum Kernel hinzuzufügen:

%Vor%

Um zu beantworten, was die Methode redirectActionRequired() im Hostnamen-Objekt tut:

%Vor%

Wenn Sie routeMiddleware dynamisch registrieren müssen, verwenden Sie Folgendes in Ihrem Dienstanbieter:

%Vor%

Bitte fügen Sie Kommentare hinzu, wenn Sie Fragen zu dieser Implementierung haben.

    
Luceos 11.05.2015, 10:27
quelle