2016-11-15 4 views
1

У меня проблема:Laravel 5,3 промежуточного порядок исполнения ошибка

Независимо от того, что я делаю, то Auth промежуточного слой всегда выполняются перед другими промежуточными программным!

Вот что я пробовал: Создан промежуточное имя аа (так что предшествует AUTH по крайней мере, в алфавитном порядке).

Я также поставил его перед AUTH один в Kernel.php

Затем я создал вложенную группу маршрутов:

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'; 
    }); 
    }); 
}); 

Если я иду в /test/test2аутентификации промежуточного слоя запускается на выполнение перед aa один.

Если я пойду /test то я вижу аа промежуточного слоя выполняется ..

код промежуточного слоя очень просто:

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

Вот Kernel.php с просьбой от @Rimon Хана

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 вы не будете конвертировать меня использовать пробелы вместо вкладок, даже если вы сила отредактируйте мой пост и измените отступ! lol

+0

Что вы хотите сделать? предоставить более подробную информацию. –

+0

Я хочу, чтобы промежуточное программное обеспечение моего выбора выполнялось до того, как один из – nonsensei

+0

предоставил файл kernel.php –

ответ

1

Я получил ответ. Вы должны переопределить $ middlewarePriority в своем Kernel.php.