Редирект на HTTPS через мидлвар

Редирект на HTTPS через мидлвар

Существует множество статей, в которых объясняется, почему настоятельно рекомендуется 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.