Метод middleware
Метод middleware класса Route применяется к объекту маршрута
и позволяет назначить один или несколько посредников, которые будут
обработаны перед выполнением целевого действия маршрута.
Первым параметром передаётся имя посредника или массив имён.
Метод возвращает тот же объект маршрута, позволяя использовать цепочку
вызовов для дополнительной настройки.
Синтаксис
<?php
Route::middleware($middleware)->group($callback);
?>
Пример
Давайте назначим посредник 'auth' для маршрута, который
возвращает профиль пользователя:
<?php
use Illuminate\Support\Facades\Route;
use AppHttpControllers\ProfileController;
Route::middleware('auth')->get('/profile', [ProfileController::class, 'index']);
?>
Теперь перед вызовом метода index в контроллере
ProfileController будет выполнен посредник auth,
который проверит аутентификацию пользователя.
Пример
Давайте назначим несколько посредников для группы маршрутов административной панели:
<?php
use Illuminate\Support\Facades\Route;
use AppHttpControllers\Admin\DashboardController;
use AppHttpControllers\Admin\UserController;
Route::middleware(['auth', 'verified', 'admin'])->group(function () {
Route::get('/admin/dashboard', [DashboardController::class, 'index']);
Route::get('/admin/users', [UserController::class, 'index']);
});
?>
Теперь все маршруты внутри группы будут проходить через
посредники auth, verified и admin
в указанном порядке.
Пример
Давайте назначим посредник с использованием псевдонима и цепочки методов для большей гибкости:
<?php
use Illuminate\Support\Facades\Route;
use AppHttpControllers\PostController;
Route::get('/posts/create', [PostController::class, 'create'])
->middleware('auth')
->name('posts.create');
?>
Метод middleware можно применять в цепочке вместе
с другими методами, такими как name или prefix.
Пример
Давайте исключим посредник для одного маршрута внутри группы
с помощью метода withoutMiddleware:
<?php
use Illuminate\Support\Facades\Route;
use AppHttpControllers\PublicController;
Route::middleware('auth')->group(function () {
Route::get('/public/info', [PublicController::class, 'info'])
->withoutMiddleware('auth');
});
?>
Теперь маршрут /public/info будет доступен без
посредника auth, несмотря на то, что находится
внутри группы с этим посредником.
Смотрите также
-
метод
group,
который создаёт группу маршрутов с общими атрибутами -
метод
withoutMiddleware,
который исключает посредники для конкретного маршрута -
метод
prefix,
который добавляет префикс к URI всех маршрутов группы -
метод
name,
который задаёт имя для маршрута