2016-11-15 26 views
1

私は問題を抱えている:Laravel 5.3ミドルウェアの実行順序のバグ

どんなに私は何をすべきか、認証ミドルウェアは、常に他のミドルウェアの前に実行されません!

は、ここに私が試したものです: 作成さAAという名前のミドルウェア(そう、それは、少なくともアルファベット順認証の前に来ます)。

Kernel.php

認証 1は、それから私は、ネストされたルートグループを作成する前に、私もそれを置く:

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 1。 @Rimonカーンからの要求に応じてここで

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

がKernel.phpです:

私は/testに行く場合は、私は

ミドルウェア・コードは本当に簡単..ですAAミドルウェアが実行された参照します

​​

編集:あなたも、あなたならば力タブの代わりにスペースを使用するために私を変換することはありません@prateekkathal私の投稿を編集し、字下げを変更する!笑

+0

何をしたいですか?詳細をご提供ください。 –

+0

私の選択のミドルウェアを実行する前に実行する – nonsensei

+0

あなたのkernel.phpファイルを提供 –

答えて

1

私は答えを得た。 Kernel.phpの$ middlewarePriorityをオーバーライドする必要があります。

/** 
* 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, 
];