2016-11-15 5 views
1

ich habe ein Problem:Laravel 5.3 Middleware-Ausführung, um Fehler

Egal was ich tue, die Auth Middleware wird immer vor anderen Middle ausgeführt!

Hier ist, was ich versucht: Erstellt eine Middleware namens aa (so kommt es vor Auth mindestens alphabetisch).

Ich habe es auch vor dem Auth ein in Kernel.php

Dann habe ich eine verschachtelte Route Gruppe:

Route::group(['prefix' => 'test', 'middleware' => 'aa'], function() { 
    Route::get('/', function() { 
    return 'test'; 
    }); 

    Route::group(['prefix' => 'test2', 'middleware' => 'auth:api'], function() { 
    Route::get('/', function() { 
     return 'test2'; 
    }); 
    }); 
}); 

Wenn ich /test/test2 gehen die Auth Middleware vor dem ausgeführt wird aa eins.

Wenn ich /test gehen dann sehe ich die aa Middleware ausgeführt wird ..

der Middleware-Code ist einfach:

public function handle($request, Closure $next) 
{ 
    dd('aa middleware!'); 
} 

Hier Kernel.php ist wie von @Rimon Khan angefordert

namespace App\Http; 

use Illuminate\Foundation\Http\Kernel as HttpKernel; 

class Kernel extends HttpKernel 
{ 
    protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    ]; 

    protected $middlewareGroups = [ 
    'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \App\Http\Middleware\VerifyCsrfToken::class, 
     \Illuminate\Routing\Middleware\SubstituteBindings::class, 
    ], 

    'api' => [ 
     'bindings', 
    ], 
    ]; 

    protected $routeMiddleware = [ 
    'aa' => \App\Http\Middleware\Aa::class, 
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 
    'can' => \Illuminate\Auth\Middleware\Authorize::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class 
    ]; 
} 

Edit: @prateekkathal Sie werden mich nie Leerzeichen konvertieren statt Tabs zu verwenden, selbst wenn Sie Kraft bearbeite meinen Beitrag und ändere den Einzug! lol

+0

was möchten Sie tun? geben Sie mehr Details an. –

+0

Ich möchte eine Middleware meiner Wahl ausgeführt werden VOR der Auth – nonsensei

+0

bieten Sie Ihre kernel.php Datei –

Antwort

1

Ich habe die Antwort bekommen. Sie sollten die $ middlewarePriority in Ihrer Kernel.php überschreiben.

/** 
* The priority-sorted list of middleware. 
* 
* Forces the listed middleware to always be in the given order. 
* 
* @var array 
*/ 
protected $middlewarePriority = [ 
    \Illuminate\Session\Middleware\StartSession::class, 
    \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
    \Illuminate\Auth\Middleware\Authenticate::class, 
    \Illuminate\Session\Middleware\AuthenticateSession::class, 
    \Illuminate\Routing\Middleware\SubstituteBindings::class, 
    \Illuminate\Auth\Middleware\Authorize::class, 
];