Global Middleware
Wenn Sie möchten, dass eine Middleware bei jeder HTTP-Anfrage an Ihre Anwendung ausgeführt wird, listen Sie die Middleware-Klasse in der Eigenschaft $middleware Ihrer app/Http/Kernel.php-Klasse auf.
Assigning Middleware To Routes
Wenn Sie Middleware bestimmten Routen zuordnen möchten, sollten Sie der Middleware zunächst einen Schlüssel in Ihrer app/Http/Kernel.php-Datei zuweisen. Standardmäßig enthält die $routeMiddleware-Eigenschaft dieser Klasse Einträge für die mit Laravel mitgelieferte Middleware. Um Ihre eigenen hinzuzufügen, fügen Sie sie an diese Liste an und weisen Sie ihr einen Schlüssel Ihrer Wahl zu. Zum Beispiel:
// Within App\Http\Kernel Class...
protected $routeMiddleware = [
'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,
];
Nachdem die Middleware im HTTP-Kernel definiert wurde, können Sie mit der Middleware-Methode einer Route Middleware zuordnen:
Route::get('admin/profile', function () {
//
})->middleware('auth');
Sie können der Route auch mehrere Middleware zuordnen:
Route::get('/', function () {
//
})->middleware('first', 'second');
Bei der Zuweisung von Middleware können Sie auch den voll qualifizierten Klassennamen übergeben:
use App\Http\Middleware\CheckAge;
Route::get('admin/profile', function () {
//
})->middleware(CheckAge::class);
Middleware Groups
Manchmal kann es sinnvoll sein, mehrere Middleware unter einem einzigen Schlüssel zu gruppieren, um die Zuordnung zu Routen zu erleichtern. Sie können dies über die $middlewareGroups-Eigenschaft Ihres HTTP-Kernels tun.
Laravel wird standardmäßig mit Web- und Api-Middleware-Gruppen geliefert, die gemeinsame Middleware enthalten, die Sie vielleicht auf Ihre Web-Benutzeroberfläche und API-Routen anwenden möchten:
/**
* The application's route middleware groups.
*
* @var array
*/
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' => [
'throttle:60,1',
'auth:api',
],
];
Middleware-Gruppen können Routen und Controller-Aktionen zugeordnet werden, wobei die Syntax der einzelnen Middleware entspricht. Auch hier machen es Middleware-Gruppen einfacher, einer Route mehrere Middleware auf einmal zuzuordnen:
Route::get('/', function () {
//
})->middleware('web');
Route::group(['middleware' => ['web']], function () {
//
});
Die Web-Middleware-Gruppe wird vom RouteServiceProvider automatisch auf Ihre Datei routes/web.php angewendet.