Уроки курса
1 Основы синтаксиса PHP 8
60 мин
2 Функции и управляющие конструкции
60 мин
3 Объектно-ориентированное программирование на PHP
60 мин
4 Наследование, интерфейсы и полиморфизм
60 мин
5 Основы баз данных MySQL и работа через PDO
60 мин
6 Архитектурный паттерн MVC
60 мин
7 Введение в Laravel и настройка окружения
60 мин
8 Маршрутизация и контроллеры в Laravel
60 мин
9 Шаблонизатор Blade и создание интерфейса
60 мин
10 Миграции баз данных и Eloquent ORM
60 мин
11 Связи моделей в Eloquent — Настройка связей 'один …
60 мин
12 Аутентификация и защита маршрутов
60 мин
13 Разработка каталога товаров и категорий
60 мин
14 Реализация корзины покупок через сессии
60 мин
15 Оформление заказа и транзакции базы данных
60 мин
16 Интеграция платежной системы Stripe
60 мин
17 Интеграция платежной системы Vipps
60 мин
18 Разработка панели администратора
60 мин
19 Оптимизация и подготовка к production
60 мин
20 Деплой Laravel-приложения на сервер
60 мин
21 Основы PHP 8: Синтаксис, переменные и управляющие конструкции
60 мин
22 Функции и массивы в PHP 8
60 мин
23 Объектно-ориентированное программирование: Классы и объекты
60 мин
24 Продвинутое ООП: Наследование, интерфейсы и полиморфизм
60 мин
25 Основы баз данных: Проектирование БД и работа с …
60 мин
26 Взаимодействие PHP с MySQL через PDO
60 мин
27 Архитектура MVC и введение в фреймворк Laravel
60 мин
28 Маршрутизация и контроллеры в Laravel
60 мин
29 Шаблонизатор Blade: Создание пользовательского интерфейса
60 мин
30 Миграции и Eloquent ORM: Создание таблиц товаров
60 мин
31 Связи в Eloquent ORM: Отношения между моделями
60 мин
32 Аутентификация и авторизация пользователей
60 мин
33 Разработка каталога товаров: Вывод, фильтрация и пагинация
60 мин
34 Реализация корзины покупок с использованием сессий
60 мин
35 Оформление заказа: Работа с формами и валидация
60 мин
36 Транзакции базы данных: Сохранение заказа
60 мин
37 Интеграция платежной системы Stripe
60 мин
38 Интеграция платежной системы Vipps
60 мин
39 Создание панели администратора
60 мин
40 Подготовка к production и деплой приложения
60 мин
41 Основы PHP 8 и синтаксис
60 мин
42 Объектно-ориентированное программирование на PHP
60 мин
43 Продвинутое ООП и интерфейсы
60 мин
44 Основы баз данных и MySQL
60 мин
45 Архитектурный паттерн MVC
60 мин
46 Введение в Laravel и маршрутизация
60 мин
47 Шаблонизатор Blade и верстка интерфейса
60 мин
48 Миграции и структура базы данных
60 мин
49 Eloquent ORM и модели
60 мин
50 Отношения в Eloquent ORM
60 мин
51 Авторизация и защита маршрутов
60 мин
52 Создание каталога товаров
60 мин
53 Реализация корзины покупок
60 мин
54 Оформление заказа и транзакции БД
60 мин
55 Интеграция платежной системы Stripe
60 мин
56 Интеграция платежной системы Vipps
60 мин
57 Панель администратора: управление товарами
60 мин
58 Панель администратора: управление заказами
60 мин
59 Подготовка к production и деплой
60 мин
60 Запуск и тестирование готового интернет-магазина
60 мин

Аутентификация и защита маршрутов

Настройка системы регистрации и авторизации пользователей, а также защита приватных страниц с помощью middleware. Применение метода Scaffolding для поэтапного внедрения безопасности.

Прогресс урока: 0%

Безопасность и идентификация пользователей — критически важная часть любого интернет-магазина. Без аутентификации мы не сможем привязать заказ к конкретному человеку или предоставить ему личный кабинет. В этом уроке мы применим концепцию Scaffolding: начнем с понимания того, как Laravel обрабатывает HTTP-запросы, затем внедрим посредников (Middleware), и, наконец, защитим наши маршруты. Middleware — это слой кода, который фильтрует входящие запросы к вашему приложению. Представьте его как охранника на входе в клуб. Если пользователь пытается зайти на страницу оформления заказа (/checkout), охранник (middleware 'auth') проверяет, есть ли у пользователя 'билет' (авторизован ли он). Если да — запрос проходит дальше к контроллеру. Если нет — пользователь перенаправляется на страницу логина. Laravel предоставляет готовую систему аутентификации, которую мы будем использовать для защиты наших маршрутов.

php
// Файл: routes/web.php
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\CheckoutController;
use Illuminate\Support\Facades\Route;

// Публичные маршруты (доступны всем)
Route::get('/', [HomeController::class, 'index'])->name('home');
Route::get('/catalog', [ProductController::class, 'index'])->name('catalog');

// Защищенные маршруты (только для авторизованных)
Route::middleware('auth')->group(function () {
    Route::get('/profile', [ProfileController::class, 'index'])->name('profile');
    Route::get('/checkout', [CheckoutController::class, 'index'])->name('checkout');
    Route::post('/checkout', [CheckoutController::class, 'process'])->name('checkout.process');
    Route::get('/orders/success', [OrderController::class, 'success'])->name('orders.success');
});

В файле routes/web.php мы используем метод Route::middleware('auth')->group(...). Это невероятно удобный способ применить один и тот же фильтр сразу к нескольким маршрутам. Типичная ошибка начинающих — забывать оборачивать POST-маршруты в middleware. Если вы защитите только GET-маршрут страницы оформления заказа, злоумышленник сможет отправить POST-запрос напрямую через инструменты вроде Postman, обойдя форму. Оборачивая маршруты в группу, мы гарантируем полную защиту. Как только пользователь проходит через этот middleware, внутри контроллера нам становится доступен глобальный хелпер auth(). Например, вызов auth()->id() вернет ID текущего авторизованного пользователя, что абсолютно необходимо при сохранении заказа в базу данных. Если пользователь не авторизован, этот метод вернет null, но благодаря middleware до этой строчки кода выполнение даже не дойдет.

Директива Blade Описание Пример использования
@auth ... @endauth Отображает контент только для авторизованных пользователей. @auth <a href='/profile'>Профиль</a> @endauth
@guest ... @endguest Отображает контент только для НЕавторизованных (гостей). @guest <a href='/login'>Войти</a> @endguest
auth()->user() Возвращает модель текущего пользователя. {{ auth()->user()->name }}

Помимо защиты бэкенда (маршрутов и контроллеров), нам нужно адаптировать пользовательский интерфейс (Frontend). В шаблонизаторе Blade есть специальные директивы @auth и @guest. С их помощью мы можем динамически менять шапку сайта. Например, если человек зашел как гость, мы показываем ему кнопки 'Войти' и 'Регистрация'. Как только он авторизуется, эти кнопки исчезают, и на их месте появляется 'Мой профиль' и 'Выйти'. Это базовый принцип Scaffolding — мы выстраиваем логику шаг за шагом, связывая серверную безопасность с клиентским отображением.

Как называется слой кода в Laravel, который перехватывает HTTP-запросы для их фильтрации (например, для проверки авторизации)? Напишите одно слово на английском.