Skip to main content

Field note

Что такое middleware ?

PHPLearnRefresh

Что такое middleware ? Спросят с вероятностью 33%

Middleware — это ПО, которое располагается между веб-сервером и приложением. Оно обрабатывает входящие запросы до того, как они достигнут вашего приложения, или обрабатывает исходящие ответы после того, как приложение их сгенерировало.

Зачем нужен Middleware

1️⃣ Управление запросами: Может изменять или проверять запросы перед передачей их в приложение. Например, оно может проверять наличие валидных токенов доступа для аутентификации или осуществлять проверку прав доступа.

2️⃣ Перехват ответов: Также может изменять ответы перед тем, как они будут отправлены пользователю, например, добавлять нужные заголовки HTTP или сжимать данные.

3️⃣ Логирование и мониторинг: Оно может записывать информацию о запросах и ответах для анализа трафика или обнаружения ошибок.

4️⃣ Обработка ошибок: Часто используется для централизованной обработки ошибок, позволяя управлять ошибками элегантно и единообразно.

В PHP-фреймворке, таком как Laravel, он часто используется для аутентификации, логирования, обработки сессий и т.д. Ниже пример middleware, который проверяет, залогинен ли пользователь в Laravel:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class CheckAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!Auth::check()) {
            return redirect('/login');
        }

        return $next($request);
    }
}

В этом примере, CheckAuthenticated проверяет, аутентифицирован ли пользователь. Если нет, перенаправляет его на страницу входа.

Middleware — это слой между сервером и приложением, который помогает управлять запросами и ответами, обеспечивает безопасность, и поддерживает чистоту и модульность кода. Это посредник, который позволяет вам централизованно управлять общими задачами, связанными с запросами и ответами.