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