鍍金池/ 問(wèn)答/PHP  網(wǎng)絡(luò)安全/ laravel 中間件執(zhí)行順序在遇到 auth:api 后被打亂是怎么回事??

laravel 中間件執(zhí)行順序在遇到 auth:api 后被打亂是怎么回事??

以下代碼:

Route::middleware(['cross' , 'options', 'auth:api'])->group(function(){
    Route::match(['get' , 'post' , 'options'] , 'test/oauth' , 'Test@oauth');
});

正常我認(rèn)為的中間執(zhí)行順序:cross -> options -> auth:api,可是這邊很坑爹?。?shí)際執(zhí)行順序:auth:api -> cross -> options??!簡(jiǎn)直把我坑慘了,請(qǐng)問(wèn)為什么 auth 中間件會(huì)被優(yōu)先執(zhí)行??

如何讓他按照我的意圖按順序執(zhí)行??(cross -> options -> auth:api

回答
編輯回答
網(wǎng)妓

Laravel提供了中間件優(yōu)先級(jí), 這是默認(rèn)的中間件優(yōu)先級(jí), 其它的都要排在它們后面

//illuminate/Foundation/Http/kernel.php
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,
];

你可以在A(yíng)pp/Http/Kernel.php中自定義你的優(yōu)先級(jí):

protected $middlewarePriority = [
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\Cross::class,
    \App\Http\Middleware\Options::class,
    \Illuminate\Auth\Middleware\Authenticate::class,
    \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    \Illuminate\Auth\Middleware\Authorize::class,
];
2017年8月12日 06:35