Middleware, laravel по-російськи

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

У Laravel є кілька стандартних посередників, включаючи посередники для аутентифікації і CSRF-захист. Всі вони розташовані в каталозі app / Http / Middleware.

створення посередника

Щоб створити посередника, використовуйте команду Artisan sh make: middleware:

Ця команда помістить новий клас CheckAge в ваш каталог app / Http / Middleware. У цьому посереднику ми будемо пропускати тільки ті запити, в яких age буде більше 200, а у всіх інших випадках будемо перенаправляти користувачів на «home» URI.

Найпростіше уявити посередника як набір «рівнів». які повинен пройти HTTP-запит, перш ніж він дійде до вашого застосування. Кожен рівень може перевірити запит і навіть зовсім відхилити його.

Виконання посередника «до» чи «після» запиту

Момент, в який спрацює посередник - до або після запиту, залежить від нього самого. Наприклад, цей посередник виконає деяку задачу раніше. ніж запит буде оброблений додатком:

А цей посередник виконає завдання після того, як запит буде оброблений додатком:

Реєстрація посередника

Глобальний посередник

Якщо ви хочете, щоб посередник запускався для кожного HTTP-запиту у вашому додатку, додайте цей посередник в властивість PHP $ middleware класу app / Http / Kernel.php.

Призначення посередника для маршрутів

Якщо ви хочете призначити посередника для конкретних маршрутів, то спочатку вам треба додати ключ посередника в клас app / Http / Kernel.php. За замовчуванням властивість PHP $ routeMiddleware цього класу містить записи посередників Laravel. Щоб додати ваш власний посередник, просто додайте його до цього списку і надайте йому ключ на свій вибір. наприклад:

Коли посередник визначений в HTTP-ядрі, ви можете використовувати метод middleware для призначення посередника на маршрут: