Как сделать middleware в Laravel 6 - простой пример

Эта заметка посвящена тому, как создать и использовать middleware в laravel 6. Если вам интересен пример того, как создать свой middleware в laravel, то вы попали по адресу. В этой статье понятно и просто описано, как использовать свои middleware в laravel.

Middleware используется для фильтрации HTTP-запросов в вашем веб-приложении. Middleware аутентификации проверяет авторизован ли пользователь, и какую страницу он хочет получить. Для того чтобы предотвратить нежелательные действия, HTTP-запрос сперва обрабатывается в middleware, который в свою очередь может либо пропустить запрос дальше, либо, к примеру, перенаправить пользователя на страницу авторизации. В Laravel «из коробки» есть middleware для подобных задач, и в этом примере мы напишем свой вариант такой проверки.

Мы создадим middleware checkType, который будет проверять корректный ли передан type. Если будет передано значение 2, то мы пропустим запрс в конктроллер, в противном случае выдадим ошибку.

http://localhost:8000/check-md?type=2

Шаг 1. Создание пользовательской проверки

На первом этапе мы должны создать пользовательскую проверку с помощью команды artisan:

php artisan make:middleware CheckType

После выполнения этой команды, будет создан файл, и вам нужно написать в нем следующий код:

app/Http/Middleware/CheckType.php

namespace App\Http\Middleware;

use Closure;

class CheckType
{
  /**
   * Обработка входящего запроса
   *
   * @param  \Illuminate\Http\Request  $request
   * @param  \Closure  $next
   * @return mixed
   */
  public function handle($request, Closure $next)
  {
    if ($request->type != 2) {
      return response()->json('Пожалуйста введите корректные данные');
    }
    // Если все прошло успешно, то мы пропускаем запрос дальше
    return $next($request);
  }
}

После успешного написания логики, мы должны зарегистрировать middleware в файле ядра. Для этого добавьте строку 'checkType' => \App\Http\Middleware\CheckType::class, как это показано ниже:

app/Http/Kernel.php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    ....

  /**
   * The application's route middleware.
   *
   * These middleware may be assigned to groups or used individually.
   *
   * @var array
   */
  protected $routeMiddleware = [
      ....
      'checkType' => \App\Http\Middleware\CheckType::class,
  ];
}

Шаг 2: Добавить маршрут

Теперь мы создадим простой маршрут, используя middleware CheckType:

routes/web.php

Route::get("check-md", "HomeController@checkMD")->middleware("checkType");

Шаг 3: Добавить метод контроллера

Теперь, наконец, мы должны добавить новый метод контроллера checkMD() в контроллер:

app/Http/Controllers/HomeController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
  public function checkMD()
  {
  	dd('You are in Controller Method');
  }
}

Ок, теперь можно запустить сервер командой php artisan serve и убедиться, что все работает именно так, как и ожидается.

http://localhost:8000/check-md?type=2
http://localhost:8000/check-md?type=1

Надюсь, эта информация помогла вам разобраться в том как можно решать задачи фильтрации запросов к вашему web-приложению.

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Пример перевода с помощью Yandex Translate API

Загрузка изображения в Laravel

Универсальная форма обратной связи — feedBackForm

Русификация Laravel

Добавить поле к существующей таблице Laravel

Как контролировать кэш CSS и скриптов

Как поменять версию PHP, используемую в командной строке на Windows

Как поменять язык в Faker

Транслитерация URL в Laravel. Примеры str_slug()

Простое логирование

Разработка бота Telegram с помощью Botman на локальном компьютере

Курсы валют с cbr.ru на PHP

Разные фишки, заготовки

Получить вложенный массив из плоского

Валидация данных в Laravel form request

Laravel Excel - Базовый экспорт

Добавить в botman editMessageText для Telegram

Namespace на примерах - Как понять пространства имен в PHP

Заготовки для автоматического заполнения товарами магазина 1.5.5.1.2

Как сделать middleware в Laravel 6 - простой пример

Примеры работы с API

Как обработать POST данные в PHP

Создать ссылку на storage из внешнего каталога для Laravel

Установить Laravel в отдельную папку (site.ru/laravel/)

Как русифицировать или поменять шаблон уведомления о сбросе пароля в Laravel

Загрузить файл для постобработки

Laravel: Отношения моделей многие ко многим - belongsToMany

Получить время выполнения PHP скрипта. Решение в 3 строки кода

Валидация номера кредитной карты на PHP (Laravel)

Laravel: Отношения моделей один ко многим - hasMany, belongsTo

Получить курсы валют с cbr.ru на PHP с кэшированием результатов

Связать папку storage с папкой public в Laravel

Откуда в Laravel Jetstream (inertia) prop auth.user?

Экспорт маршрутов из Laravel в JSON файл

Создание form request в Laravel: руководство для начинающих

Фиксированная сортировка массива на основе хэша

Постраничная навигация на Bootstrap в Laravel 8

Вывести список всех файлов на сервере (и размер файла)

Обработка ошибок в Laravel form request

Blade - расширить @section с использованием директивы @parent

Добавить данные об авторизации при каждом запросе к API в Laravel

Работа с файлами в Laravel Form Request

Работа с вложенными объектами и коллекциями в Laravel form request

Стандартные свойства модели в Laravel

Laravel: Отношение через таблицу-посредника - hasOneThrough()

Laravel: Отношения моделей один к одному - hasOne, belongsTo

Авторизацией и аутентификация в Laravel form request

Настройка команды CRON на хостинге nic.ru для активации Laravel schedule

Laravel form request для создания API-запросов

Laravel: Отношение через таблицу-посредника - hasManyThrough()

HTTP-запросы в Laravel form request - работа с различными типами запросов

Создание класса модели в Laravel

Создание уникального индекса в миграции Laravel

Установка Laravel и создание нового проекта

Как создать модель в Laravel

Создание таблицы в базе данных (миграции) для модели в Laravel

Базовые методы CRUD контроллера для модели в Laravel

Наш сайт использует куки, нажмите «ОК» если вы не против
OK