Как сделать 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. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

[MODx] Генератор настроек MIGX

[MODx, MIGx] Документация на русском по MIGX

[MODX] Импорт и экспорт в MiniShop2. Реализация 1

[JS] Маска для ввода телефона +7(___)___-__-__

[MODx] minishop2 tips

Как включить HTTPS (SSL) в MODX - Подробная инструкция

[MODx, miniShop2] Генерация YML для выгрузки в маркет

[MODx] Подсказки по API

[OpenCart] Вывести на главную все категории с картинками

[MODx] Сайт на обслуживании (выключить сайт)

[MODx, MIGX] Примеры использования

[PHP, JSON] Пример перевода с помощью Yandex Translate API

Расширение свойств товаров minishop2

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

jQuery.Maskedinput js - документация на русском с примерами

[MODx, Gallery] Галерея. Вывести обложки альбомов и фотографии

[Opencart] Вернуть английский язык, если вы его удалили

[OpenCart] Вывести модуль напрямую через контроллер

[MODX, MIGX] Вывести getImageList только если он не пустой

[MODx, Quip] Более рабочий вариант.

[MODX, MIGX] Тип поля "Список ресурсов" (resourcelist) с ограничением по родителю (parents)

[MODX, MiniShop2] Примеры выборки where, optionFilters, innerJoin

[MODX] pThumb - ресайз изображений. Примеры использования.

Красивое адаптивное меню под pdoMenu

Отключить автозаполнение input

Все записи

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