Перейти к основному содержимому

Практическое задание 4: Authentication & Security

🔐 Аутентификация и безопасность - Завершение архитектуры веб-приложения

📋 Описание задания

К предыдущему приложению (лендинг + API + БД) прикрутить авторизацию - в базе данных сделать миграцию с новой таблицей пользователей, пароли должны храниться безопасно. Создать полноценную систему аутентификации с регистрацией, входом в систему и защитой API endpoints.

🎯 Цели задания

  • Изучение аутентификации и авторизации
  • Работа с миграциями базы данных
  • Безопасное хранение паролей
  • Настройка JWT токенов и middleware
  • Понимание CORS и валидации данных
  • Завершение архитектуры веб-приложения

📝 Требования к выполнению

Основные требования:

  1. Миграция базы данных - создать таблицу users с безопасным хранением паролей
  2. API для аутентификации:
    • POST /api/register - регистрация пользователя
    • POST /api/login - вход в систему
  3. Защита существующих endpoints - добавить middleware для проверки JWT токенов
  4. Безопасность - хеширование паролей, валидация данных, CORS
  5. Интеграция с фронтендом - обновить лендинг для работы с аутентификацией

📊 Система оценивания

  • Полное выполнение: Максимальная оценка (2 балла)
  • Частичное выполнение: Преподаватель дает обратную связь и просит переделать
  • Пересдача: Возможна после исправления замечаний

🛠 Технические требования

API Endpoints:

  • POST /api/register - регистрация (email, password) → JWT token
  • POST /api/login - вход (email, password) → JWT token
  • POST /api/form - защищенный endpoint (требует JWT в заголовке Authorization)
  • GET /api/profile - профиль пользователя (опционально)

Безопасность:

  • Хеширование паролей - использовать bcrypt или аналогичный алгоритм
  • JWT токены - для аутентификации и авторизации
  • Валидация данных - проверка email, длины пароля, обязательных полей
  • CORS настройки - безопасные настройки для кросс-доменных запросов
  • Middleware - проверка JWT токенов для защищенных endpoints

🔗 Полезные ресурсы

Аутентификация и безопасность:

Безопасность:

📋 Чек-лист выполнения

База данных:

  • [ ] Создана миграция для таблицы users
  • [ ] Пароли хешируются с помощью bcrypt
  • [ ] Email имеет уникальное ограничение
  • [ ] Добавлены поля created_at и updated_at

Backend API:

  • [ ] Реализован POST /api/register с хешированием паролей
  • [ ] Реализован POST /api/login с генерацией JWT токенов
  • [ ] Добавлен middleware для проверки JWT токенов
  • [ ] Защищен существующий POST /api/form (требует аутентификации)
  • [ ] Добавлена валидация всех входных данных
  • [ ] Настроены CORS для безопасных запросов

Frontend:

  • [ ] Создана страница регистрации
  • [ ] Создана страница входа
  • [ ] Обновлена форма лендинга для работы с аутентификацией
  • [ ] Добавлено сохранение JWT токена в localStorage
  • [ ] Реализована отправка токена в заголовке Authorization

Интеграция:

  • [ ] Протестирована полная цепочка: регистрация → вход → защищенные API
  • [ ] Данные формы сохраняются только для авторизованных пользователей
  • [ ] Проверена работа без токена (должна возвращать 401)
  • [ ] Проверена работа с неверным токеном (должна возвращать 401)

🧪 Тестирование

Обязательные тесты:

  1. Регистрация пользователя - создание нового аккаунта
  2. Вход в систему - получение JWT токена
  3. Защищенные endpoints - доступ только с валидным токеном
  4. Хеширование паролей - пароли не хранятся в открытом виде
  5. Валидация данных - проверка email, длины пароля