Существует множество статей, в которых объясняется, почему настоятельно рекомендуется HTTPS, я подытожу это следующим: HTTPS — это защищенная версия HTTP. Поэтому, если вы заботитесь о безопасности своего веб-приложения, то вам нужен HTTPS.
Laravel Middleware
Согласно документации Laravel, мидлвары предоставляют удобный механизм фильтрации HTTP-запросов, поступающих в ваше приложение.
Есть много вещей, которые вы можете сделать с помощью мидлваров, но в этом уроке мы собираемся форсировать HTTP-запросы на протокол HTTPS.
Думаю, что у вас уже есть приложение на Laravel, где вы хотите применить это сделать.
Примечание. Вам необходимо установить сертификат SSL (например, LetsEncrypt) на сервер, где запущено ваше приложение, прежде чем продолжить этот урок!
Начнем!
Отказ от ответственности: это всего лишь способ, который я использую, чтобы избежать неудобств, связанных с файлом .htaccess.
Создайте мидлвар SecuredHttp
с помощью команды:
php artisan make:middleware SecuredHttp
Все мидлвары Laravel можно найти здесь: app\Http\Middleware
Давайте добавим нашу логику редиректа в наш мидлвар. Все HTTP-запросы, поступающие в мидлвар, обрабатываются внутри метода handle()
.
public function handle($request, Closure $next){ if (!$request->secure()) { return redirect()->secure($request->path()); } return $next($request); }
Наша логика довольно проста. Она проверяет незащищенный запрос и перенаправляет его обратно по защищенному пути (HTTPS).
Теперь надо зарегистрировать наш мидлвар SecuredHttp
в качестве глобального мидлвара. Это позволит ему запускаться при каждом HTTP-запросе, поступающем в наше приложение.
Обновите свойство $middleware
вашего класса app/Http/Kernel.php
следующим образом:
protected $middleware = [ .... \App\Http\Middleware\SecuredHttp::class, .... ];
Готово! Мидлвар SecuredHttp
активно ожидает HTTP-запросов для вашего приложения :)
Вывод
Я только что показал вам одну из миллиона вещей, которые вы можете сделать мидлварами Laravel.
Автор: Stephen Jude
Перевод: Алексей Широков
Наш Телеграм-канал — следите за новостями о Laravel.