Http middleware (посередники)
HTTP Middleware (посередники) - це фільтри обробки HTTP-запиту. Так, наприклад, в Laravel включені middlewares для перевірки аутентифікації користувача. Якщо користувач не залогінені, middleware перенаправляє його на сторінку логіна. Якщо ж залягання - middleware не втручається в проходження запиту, передаючи його далі по ланцюжку middleware-посередників до власне додатком.
Примітка: Middlewares схожі на фільтри Рауса в Laravel 4.
створення middleware
Давайте для прикладу створимо middleware, який пропускатиме лише ті запити, у яких параметр age буде більше ніж 200, а всіх інших перенаправляти на / home.
Для створення middleware скористаємося командою make: middleware:
В папці app / Http / Middleware буде створений файл з класом OldMiddleware.
Щоб пропустити запит далі, потрібно викликати функцію-замикання $ next з параметром $ request.
Найкраще представляти middlewares як набір рівнів, які HTTP-запит повинен пройти, перш ніж дійде до вашого застосування. На кожному рівні запит може бути перевірений за різними критеріями і, якщо потрібно, повністю відхилено.
Реєстрація middleware
Якщо вам потрібно, щоб через ваш middleware проходили всі HTTP-запити, то просто додайте його в властивість $ middleware класу app / Http / Kernel.php:
Зіставити з заданими Рауса
Додайте ваш middleware в властивість routeMiddleware класу app / Http / Kernel.php. призначивши йому деякий ім'я, наприклад, auth. яке буде ключем масиву:
Тепер ви можете призначити цей middleware Рауса або групі:
Terminable Middleware
Іноді, middleware може знадобитися виконати деяку роботу після того як HTTP відповіді були відправлені в браузер. Наприклад, middleware "session", що поставляється з Laravel, записує дані сесії в сховище після відправки відповіді браузеру. Для цього ви можете визначити middleware як "terminable".
Як ви бачите, на додаток до визначення методу handle. TerminableMiddleware визначає і terminate метод. Цей метод отримує як запит так і відповідь. Після того як ви визначили terminable middleware, ви повинні додати його в список світових посередників в ваше ядро HTTP.