2016-04-20 9 views
9

Ist es möglich, eine bestimmte Middleware zu deaktivieren, ohne die gesamte Middleware zu deaktivieren?Laravel 5.2.x spezifische Middleware deaktivieren

Ich werde es verwenden, wenn Tests ausgeführt werden, also möchte ich Middleware-Gruppen nicht definieren und sie dann meinen Routen zuweisen.

$this->withoutMiddleware(); // <-- This will prevent all middleware 

$this->withoutMiddleware('web'); // <-- What I want is something like this 

Antwort

0

Nun können Sie middleware groups verwenden, die eine viel bessere Lösung ist. Definieren Sie einige Gruppen und weisen Sie sie Ihren Routen zu.

+1

Web, in der Frage erwähnt ist (wahrscheinlich) eine Middleware-Gruppe bereits . Trotzdem erklärt dies nicht, wie eine einzelne Middleware- oder Middlewaregruppe deaktiviert wird. –

3

ich eine alternative Lösung haben, können Sie eine Bedingung in Ihrer beeinflusst Middleware nach Ihren environnement hinzufügen:

public function handle($request, Closure $next) 
{ 
    if (App::environment('testing')) { 
     return $next($request); 
    } 

    // Your middleware logic 

    return $next($request); 
} 
+0

Ich denke, das sollte eine gute Lösung für mich sein. Ich wünschte, es gäbe eine Methode, mit der Sie eine konkrete Middleware deaktivieren können. – aleixfabra

+0

Ich kenne die Existenz einer solchen Funktion nicht. Es könnte eine intelligente Pull-Anfrage für die Laravel Repo sein – soywod

+0

Ich stimme Ihnen zu. – aleixfabra

0

Sie bestimmte Routen außer Array auf die $ selbst in der Middleware hinzufügen.

Zum Beispiel: Ich habe nicht meine api Routen will Web-Middleware haben, so ist dies, was ich in VerifyCsrfToken.php tat

protected $except = [ 
    "api/*", 
    "more/routes", 
]; 
Verwandte Themen