Laravel 8 為路由分配中間件

2021-07-16 17:57 更新

假設(shè)你想為指定的路由分配中間件 , 首先應(yīng)該在 app/Http/Kernel.php 文件內(nèi)為該中間件分配一個(gè)鍵。默認(rèn)情況下,該類中的 $routeMiddleware 屬性下包含了 Laravel 內(nèi)置的中間件。若要加入自定義的中間件,只需把它附加到列表后并為其分配一個(gè)自定義鍵。例如:

// Within App\Http\Kernel Class...

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];

在 HTTP 內(nèi)核中定義了中間件后,您可以使用 middleware 方法將中間件分配給路由:

Route::get('admin/profile', function () {
    //
})->middleware('auth'); 

您還可以將多個(gè)中間件分配給路由:

Route::get('/', function () {
    //
})->middleware('first', 'second'); 

分配中間件時(shí),您還可以傳遞完全限定的類名:

use App\Http\Middleware\CheckAge;

Route::get('admin/profile', function () {
    //
})->middleware(CheckAge::class); 

將中間件分配給一組路由時(shí),有時(shí)可能需要阻止將中間件應(yīng)用于該組中的單個(gè)路由。 您可以使用 withoutMiddleware 方法完成此操作:

use App\Http\Middleware\CheckAge;

Route::middleware([CheckAge::class])->group(function () {
    Route::get('/', function () {
        //
    });

    Route::get('admin/profile', function () {
        //
    })->withoutMiddleware([CheckAge::class]);
});

withoutMiddleware 方法只能刪除路由中間件,不適用于 全局中間件。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)