Laravel – Middleware

356

Від автора: як випливає з назви, Laravel Middleware (посередник) виконує функцію проміжної ланки між запитом і відповіддю. Це тип механізму фільтрації. Наприклад, Laravel включає Middleware, яке перевіряє справжність користувача програми. Якщо користувач не аутентифікований, він буде перенаправлений на головну сторінку, в іншому випадку він буде перенаправлений на сторінку входу в систему.

Засіб проміжного рівня можна створити, виконавши наступну команду:

php artisan make:middleware

Замініть на ім’я вашого Middleware. Засіб, який ви створюєте, можна буде створено в папці app/Http/Middleware.

Крок 1 — Створіть Middleware AgeMiddleware. Для цього нам потрібно виконати наступну команду:

php artisan make:middleware AgeMiddleware

Крок 2 — Після успішного виконання команди ви отримаєте наступний результат:

Laravel – Middleware

Крок 3 — AgeMiddleware буде створено в папці app/Http/Middleware. Новостворений файл буде вже містити наступний код.

Реєстрація Middleware

Перед використанням ми повинні зареєструвати кожне Middleware. У Laravel існує два типи Middleware.

Глобальне Middleware

Middleware маршруту

Глобальне Middleware обробляє всі HTTP запити додатки, в той час як Middleware маршруту обробляє певні маршрути. Middleware можна зареєструвати у файлі app/Http/Kernel.php. Цей файл містить дві властивості $middleware і $routeMiddleware. $middleware використовується для реєстрації глобального Middleware, а властивість $routeMiddleware — для реєстрації Middleware для конкретного маршруту. Щоб зареєструвати глобальне Middleware, вкажіть класи в кінці властивості $middleware.

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.

protected $routeMiddleware = [
‘auth’ => \App\Http\Middleware\Authenticate::class,
‘аутентифікації.basic’ => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
‘guest’ => \App\Http\Middleware\RedirectIfAuthenticated::class,
];

У попередньому прикладі ми створили AgeMiddleware . Тепер ми можемо зареєструвати його у властивостях Middleware для конкретного маршруту. Код, який використовується для цього, наведено нижче. app/Http/Kernel.php

\App\Http\Middleware\Authenticate::class,
‘аутентифікації.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.

public function handle($request, Closure $next) {
return $next($request);
}

Крок 1 – Створіть Middleware RoleMiddleware, виконавши наступну команду:

php artisan make:middleware RoleMiddleware

Крок 2 — Після успішного завершення роботи ви отримаєте наступний результат:

Laravel – Middleware

Крок 3 — Додайте наступний код в метод обробки створеного RoleMiddlewareat у файлі app/Http/Middleware/RoleMiddleware.php

Крок 4 — Зареєструйте RoleMiddleware у файлі app\Http\Kernel.php. Додайте у цей файл рядок сірим кольором, щоб зареєструвати RoleMiddleware.

Laravel – Middleware

Крок 5 — Виконайте наступну команду для створення Middleware TestController:

php artisan make:controller TestController –plain

Крок 6 — Після успішного виконання команди ви отримаєте наступний результат:

Laravel – Middleware

Крок 7. Скопіюйте наступний код у файл app/Http/TestController.php.

Test Controller.”;
}
}

Крок 8 — Додайте наступний рядок коду в файл app/Http/routes.php.

Route::get(‘role’,[
‘middleware’ => ‘Role:editor’,
‘uses’ => ‘TestController@index’,
]);

Крок 9 – Перейдіть за наступним URL-адресою, щоб перевірити Middleware з параметрами http://localhost:8000/role. Крок 10 – В результаті ви повинні отримати наступне.

Laravel – Middleware

Middleware з методом «terminate»

Terminate Middleware виконує певне завдання після відправки відповіді в браузер. Це можна зробити з допомогою створення Middleware з методом «terminate». Термінальне Middleware повинно бути зареєстровано як глобальне. Метод terminate приймає два аргументи $request і $response. Метод terminate можна створити з допомогою наступного коду.

Крок 1 – Створіть Middleware TerminateMiddleware, виконавши наступну команду.

php artisan make:middleware TerminateMiddleware

Крок 2 – Цей код дає наступний результат:

Laravel – Middleware

Крок 3 — Скопіюйте наступний код у новостворене Middleware TerminateMiddleware в app/Http/Middleware/TerminateMiddleware.php.

Executing statements of terminate method of TerminateMiddleware.”;
}
}

Крок 4 — Зареєструйте TerminateMiddleware у файлі app\Http\Kernel.php. Додайте в цьому файлі рядок сірим кольором, щоб зареєструвати TerminateMiddleware.

Laravel – Middleware

Крок 5 — Виконайте наступну команду для створення ABCController.

php artisan make:controller ABCController –plain

Крок 6 — Після успішного виконання URL-адреси ви отримаєте наступний результат:

Laravel – Middleware

Крок 7. Скопіюйте наступний код у файл app/Http/ABCController.php.

ABC Controller.”;
}
}

Крок 8 — Додайте наступний рядок коду в файл app/Http/routes.php.

Route::get(‘terminate’,[
‘middleware’ => ‘terminate’,
‘uses’ => ‘ABCController@index’,
]);

Крок 9 – Перейдіть за наступним URL-адресою, щоб перевірити Terminable Middleware. http://localhost:8000/terminate

Крок 10 – В результаті ви отримаємо наступний результат:

Laravel – Middleware