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

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

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