От автора: как следует из названия, Laravel Middleware (посредник) выполняет функцию промежуточного звена между запросом и ответом. Это тип механизма фильтрации. Например, Laravel включает Middleware, которое проверяет подлинность пользователя приложения. Если пользователь аутентифицирован, он будет перенаправлен на главную страницу, в противном случае он будет перенаправлен на страницу входа в систему.
Средство промежуточного уровня можно создать, выполнив следующую команду:
1 |
php artisan make:middleware <middleware-name> |
Замените <middleware-name> на имя вашего Middleware. Средство, которое вы создаете, можно будет создано в папке app/Http/Middleware.

Бесплатный курс «Laravel + Angular. Быстрый старт»
Изучите курс и узнайте, как создать веб-приложение с нуля на Angular и Laravel
Получить курсШаг 1 — Создайте Middleware AgeMiddleware. Для этого нам нужно выполнить следующую команду:
1 |
php artisan make:middleware AgeMiddleware |
Шаг 2 — После успешного выполнения команды вы получите следующий результат:
Шаг 3 — AgeMiddleware будет создано в папке app/Http/Middleware. Вновь созданный файл будет уже содержать следующий код.
1 2 3 4 5 6 7 8 9 |
<?php namespace App\Http\Middleware; use Closure; class AgeMiddleware { public function handle($request, Closure $next) { return $next($request); } } |
Регистрация Middleware
Перед использованием мы должны зарегистрировать каждое Middleware. В Laravel существует два типа Middleware.
Глобальное Middleware
Middleware маршрута
Глобальное Middleware обрабатывает все HTTP запросы приложения, в то время как Middleware маршрута обрабатывает определенные маршруты. Middleware можно зарегистрировать в файле app/Http/Kernel.php. Этот файл содержит два свойства $middleware и $routeMiddleware. $middleware используется для регистрации глобального Middleware, а свойство $routeMiddleware — для регистрации Middleware для конкретного маршрута. Чтобы зарегистрировать глобальное Middleware, укажите классы в конце свойства $middleware.
1 2 3 4 5 6 7 8 |
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \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, ]; |
Чтобы зарегистрировать Middleware для конкретного маршрута, добавьте ключ и значение в свойство $routeMiddleware.
1 2 3 4 5 |
protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, ]; |
В предыдущем примере мы создали AgeMiddleware . Теперь мы можем зарегистрировать его в свойствах Middleware для конкретного маршрута. Код, который используется для этого, приведен ниже. app/Http/Kernel.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \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, ]; protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'Age' => \App\Http\Middleware\AgeMiddleware::class, ]; } |
Параметры Middleware
С помощью Middleware мы также можем передавать параметры. Например, если ваше приложение поддерживает разные роли, такие как user, admin, super admin и т. д., и вы хотите аутентифицировать действия на основе роли, это можно сделать с помощью передачи параметров через Middleware. Средство, которое мы создаем, содержит следующую функцию, и мы можем передать наш собственный аргумент после аргумента $next.
1 2 3 |
public function handle($request, Closure $next) { return $next($request); } |
Шаг 1 – Создайте Middleware RoleMiddleware, выполнив следующую команду:
1 |
php artisan make:middleware RoleMiddleware |
Шаг 2 — После успешного выполнения вы получите следующий результат:
Шаг 3 — Добавьте следующий код в метод обработки созданного RoleMiddlewareat в файле app/Http/Middleware/RoleMiddleware.php
1 2 3 4 5 6 7 8 9 10 |
<?php namespace App\Http\Middleware; use Closure; class RoleMiddleware { public function handle($request, Closure $next, $role) { echo "Role: ".$role; return $next($request); } } |
Шаг 4 — Зарегистрируйте RoleMiddleware в файле app\Http\Kernel.php. Добавьте в этот файл строку, выделенную серым цветом, чтобы зарегистрировать RoleMiddleware.
Шаг 5 — Выполните следующую команду для создания Middleware TestController:

Бесплатный курс «Laravel + Angular. Быстрый старт»
Изучите курс и узнайте, как создать веб-приложение с нуля на Angular и Laravel
Получить курс
1 |
php artisan make:controller TestController --plain |
Шаг 6 — После успешного выполнения команды вы получите следующий результат:
Шаг 7. Скопируйте следующий код в файл app/Http/TestController.php.
1 2 3 4 5 6 7 8 9 10 11 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; class TestController extends Controller { public function index(){ echo "<br>Test Controller."; } } |
Шаг 8 — Добавьте следующую строку кода в файл app/Http/routes.php.
1 2 3 4 |
Route::get('role',[ 'middleware' => 'Role:editor', 'uses' => 'TestController@index', ]); |
Шаг 9 – Перейдите по следующему URL-адресу, чтобы проверить Middleware с параметрами //localhost:8000/role. Шаг 10 – В результате вы должны получить следующее.
Middleware с методом «terminate»
Terminate Middleware выполняет определенную задачу после отправки ответа в браузер. Это можно сделать с помощью создания Middleware с методом «terminate». Терминальное Middleware должно быть зарегистрировано как глобальное. Метод terminate принимает два аргумента $request и $response. Метод terminate можно создать с помощью следующего кода.
Шаг 1 – Создайте Middleware TerminateMiddleware, выполнив следующую команду.
1 |
php artisan make:middleware TerminateMiddleware |
Шаг 2 – Этот код дает следующий результат:
Шаг 3 — Скопируйте следующий код во вновь созданное Middleware TerminateMiddleware в app/Http/Middleware/TerminateMiddleware.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php namespace App\Http\Middleware; use Closure; class TerminateMiddleware { public function handle($request, Closure $next) { echo "Executing statements of handle method of TerminateMiddleware."; return $next($request); } public function terminate($request, $response){ echo "<br>Executing statements of terminate method of TerminateMiddleware."; } } |
Шаг 4 — Зарегистрируйте TerminateMiddleware в файле app\Http\Kernel.php. Добавьте в этом файле строку, выделенную серым цветом, чтобы зарегистрировать TerminateMiddleware.
Шаг 5 — Выполните следующую команду для создания ABCController.
1 |
php artisan make:controller ABCController --plain |
Шаг 6 — После успешного выполнения URL-адреса вы получите следующий результат:
Шаг 7. Скопируйте следующий код в файл app/Http/ABCController.php.
1 2 3 4 5 6 7 8 9 10 11 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; class ABCController extends Controller { public function index(){ echo "<br>ABC Controller."; } } |
Шаг 8 — Добавьте следующую строку кода в файл app/Http/routes.php.
1 2 3 4 |
Route::get('terminate',[ 'middleware' => 'terminate', 'uses' => 'ABCController@index', ]); |
Шаг 9 – Перейдите по следующему URL-адресу, чтобы проверить Terminable Middleware. //localhost:8000/terminate
Шаг 10 – В результате вы получим следующий результат:
Источник: //www.tutorialspoint.com/
Редакция: Команда webformyself.

Бесплатный курс «Laravel + Angular. Быстрый старт»
Изучите курс и узнайте, как создать веб-приложение с нуля на Angular и Laravel
Получить курс
Хотите узнать, что необходимо для создания сайта?
Посмотрите видео и узнайте пошаговый план по созданию сайта с нуля!
Смотреть