2016-08-07 19 views
1

Benutzer Angenommen, haben sich abgemeldet und Benutzer besuchen diese Seite http://domain.com/adminLaravel - Warum Middleware übersprungen werden?

In der Steuerung, ich habe __construct Methode wie folgt:

public function __construct() { 
    $this->middleware('auth'); 
    dd("Hello World"); 
} 

Warum es „Hallo Welt“ auf dem Bildschirm nicht zeigen? $this->middleware sollte Seite exectuted erste und leiten werden über Auth Middleware zum Login, weil Benutzer nicht angemeldet haben

jedoch Wenn ich dd("Hello World"); wie diese entfernen.

public function __construct() { 
    $this->middleware('auth'); 
} 

Es funktioniert und auf eine Anmeldeseite umgeleitet.

Antwort

2

Da die Methode $this->middleware Ihre Controller-Methoden/Aktionen an die auth Middleware bindet, die Sie definieren. Es wird jetzt nicht ausgeführt, wenn Ihre Route aufgerufen wird.

Ref:Laravel docs

es bequemer ist, Middleware zu bestimmen, innerhalb Ihres Controller Konstruktor. Mit der Middleware-Methode aus dem Konstruktor Ihres Controllers können Sie dem Controller Aktion problemlos Middleware zuweisen.

und während dieser Route: http://domain.com/admin. In Wirklichkeit wird die index Methode Ihres Controllers ausgelöst, nachdem das Controller-Objekt instanziiert wurde und die Middleware bindet.

+0

Wo kann ich sehen, dass '$ this-> middleware' an Controller-Methoden bindet? –

+0

Sie befindet sich in der Klasse 'vendor \ laravel \ framework \ src \ Illuminate \ Container \ Container'. Methodenname ist 'callClass' –