Уроки курса
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.

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

Введение в аутентификацию Laravel

Создание интернет-магазина невозможно без надежной системы идентификации пользователей. В Laravel процесс аутентификации (проверки, кто именно делает запрос) и авторизации (проверки прав на выполнение действия) реализован на высшем уровне. Мы будем использовать подход Direct Instruction для пошагового внедрения этой системы. В ядре Laravel уже встроены фасады Auth и Session, которые управляют состоянием пользователя. Типичная ошибка новичков — попытка написать свою систему хэширования паролей или управления сессиями. Это небезопасно. Laravel использует алгоритм Bcrypt по умолчанию. Когда пользователь вводит логин и пароль, фреймворк извлекает хэш из базы данных и сравнивает его с введенным паролем. Если они совпадают, в сессию записывается ID пользователя, и фреймворк понимает, что последующие запросы идут от авторизованного лица.

Посредники (Middleware) и защита маршрутов

Основываясь на методологии Mastery Learning, мы не двинемся дальше, пока не усвоим концепцию Middleware. Middleware (Посредник) — это слой кода, который фильтрует HTTP-запросы, поступающие в ваше приложение. Представьте его как охранника на входе в клуб. Если маршрут защищен посредником 'auth', то при попытке неавторизованного пользователя зайти на страницу профиля или оформления заказа, Middleware перехватит запрос и перенаправит (redirect) пользователя на страницу логина. Это критически важно для безопасности e-commerce платформы. В Laravel посредники регистрируются в ядре HTTP (app/Http/Kernel.php). Для защиты группы маршрутов мы используем метод group() в файле routes/web.php. Это позволяет применить правило сразу к нескольким адресам, сохраняя код чистым (DRY - Don't Repeat Yourself).

php
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']);
});

Анализ кода защиты маршрутов

Давайте разберем предоставленный выше код. Мы используем фасад Route, вызывая метод middleware('auth'). Внутрь метода group мы передаем замыкание (closure), в котором объявляем маршруты. Первый маршрут — GET-запрос к '/profile', который обрабатывается методом index контроллера ProfileController и имеет имя 'profile'. Второй и третий маршруты относятся к оформлению заказа (Checkout). Обратите внимание на использование POST-запроса для метода 'process' — именно он будет обрабатывать логику сохранения заказа в БД, что мы разберем в уроке 14. Использование именованных маршрутов (метод name()) — это лучшая практика. В Blade-шаблонах вы будете ссылаться на маршрут как route('checkout'), и если URL-адрес изменится в будущем (например, на '/order/checkout'), вам не придется переписывать все ссылки в HTML-коде.

Что произойдет, если неавторизованный (гость) пользователь попытается перейти по маршруту '/checkout', защищенному middleware('auth')?

Задание

Сценарий: Настройка защиты пользовательского интерфейса. Вам необходимо обеспечить безопасность личных данных покупателей.

  • Откройте файл routes/web.php в вашем проекте.
  • Найдите маршруты, отвечающие за отображение корзины и каталога товаров — убедитесь, что они НЕ обернуты в middleware 'auth' (они должны быть публичными).
  • Создайте новую группу маршрутов с middleware('auth').
  • Перенесите внутрь этой группы маршруты контроллеров ProfileController и CheckoutController.
  • Запустите локальный сервер (php artisan serve) и попытайтесь зайти на /checkout в режиме Инкогнито, чтобы убедиться, что вас перекидывает на страницу логина.
10 баллов

Какой метод фасада Route используется для объединения нескольких маршрутов под одним правилом (например, под одним middleware)? Укажите только название метода.