Эта заметка посвящена тому, как создать и использовать 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)
Не писать ответ