0Pricing
PHP Academy · Урок

Защита маршрутов с помощью промежуточного ПО

Используйте промежуточное ПО auth и guest для защиты маршрутов и перенаправления пользователей

«Защита маршрутов с помощью промежуточного ПО» — бесплатный урок PHP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Что такое промежуточное ПО?

Промежуточное ПО — это код, который выполняется до или после того, как HTTP-запрос достигает контроллера. Оно используется для аутентификации, ведения журнала, CORS, ограничения частоты запросов и других задач.

Встроенное промежуточное ПО аутентификации

Промежуточное ПО auth перенаправляет неаутентифицированных пользователей на страницу входа (или возвращает 401 для запросов API).

<?php
Route::get("/dashboard", [DashboardController::class, "index"])
    ->middleware("auth");

Применение промежуточного ПО к группам

Защитите целую группу маршрутов одновременно.

<?php
Route::middleware(["auth", "verified"])->group(function () {
    Route::get("/dashboard", [DashboardController::class, "index"]);
    Route::get("/profile",   [ProfileController::class, "show"]);
});

Гостевое промежуточное ПО

Промежуточное ПО guest перенаправляет аутентифицированных пользователей со страниц входа и регистрации.

<?php
Route::middleware("guest")->group(function () {
    Route::get("/login",    [LoginController::class, "create"]);
    Route::get("/register", [RegisterController::class, "create"]);
});

Создание пользовательского промежуточного ПО

Сгенерируйте его с помощью Artisan и реализуйте метод handle().

$ php artisan make:middleware EnsureSubscribed

Логика пользовательского промежуточного ПО

Верните следующий запрос, чтобы продолжить обработку, или верните ответ, чтобы прервать её.

<?php
public function handle(Request $request, Closure $next): Response
{
    if (!$request->user()?->isSubscribed()) {
        return redirect("/subscribe");
    }
    return $next($request);
}

Регистрация промежуточного ПО

Зарегистрируйте псевдонимы промежуточного ПО в app/Http/Kernel.php (Laravel 10) или bootstrap/app.php (Laravel 11 и новее).

<?php
// Laravel 11+ bootstrap/app.php:
->withMiddleware(function (Middleware $m) {
    $m->alias(["subscribed" => EnsureSubscribed::class]);
})

Параметры промежуточного ПО

Передавайте параметры промежуточному ПО с помощью двоеточия.

<?php
Route::middleware("role:admin")->group(function () {
    // ...
});
// In middleware handle():
public function handle(Request $request, Closure $next, string $role): Response

Промежуточное ПО после обработки

Код после $next($request) выполняется после формирования ответа — это полезно для ведения журнала и изменения ответа.

<?php
public function handle(Request $request, Closure $next): Response
{
    $response = $next($request); // controller runs here
    $response->headers->set("X-App", "Laravel");
    return $response;
}

Приоритет промежуточного ПО

Порядок выполнения промежуточного ПО имеет значение. Глобальное промежуточное ПО (например, TrimStrings) выполняется до промежуточного ПО маршрутов.

Промежуточное ПО ограничения частоты

Laravel предоставляет ограничение частоты запросов через промежуточное ПО throttle.

<?php
Route::middleware("throttle:60,1")->group(function () {
    // 60 requests per 1 minute
});

Итоги

Промежуточное ПО фильтрует HTTP-запросы. Применяйте auth, чтобы защищать маршруты, создавайте пользовательское промежуточное ПО для бизнес-правил и объединяйте маршруты, чтобы удобно использовать общее промежуточное ПО.

Быстрая проверка

Что промежуточное ПО auth делает с неаутентифицированными пользователями?

Часто задаваемые вопросы

Урок «Защита маршрутов с помощью промежуточного ПО» бесплатный?

Да — полный текст урока «Защита маршрутов с помощью промежуточного ПО» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Защита маршрутов с помощью промежуточного ПО»?

Используйте промежуточное ПО auth и guest для защиты маршрутов и перенаправления пользователей Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Защита маршрутов с помощью промежуточного ПО»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Аутентификация с Laravel Breeze
  2. Защита маршрутов с помощью промежуточного ПО
  3. Gates: простые проверки авторизации
  4. Политики: авторизация на основе моделей
← Назад к PHP Academy