- Способы регистрации и входа:
- Пароль и электронная почта
- Через сервисы: Google, Yandex
- Восстановление доступа:
- Отправка email с токеном для сброса пароля
- API: Django REST Framework и API Keys (Секретные ключи)
- ORM: Django ORM
- Контейнеризация: Docker и Docker Compose
- База данных: PostgreSQL
- База данных для тестирования: SQLite
- CI/CD деплой: GitHub Actions
- Документирование API: Swagger/Redoc
- Тестирование: Pytest
- Аутентификация/авторизация: OAuth 2.0 (Google и Yandex) и JWT (JSON Web Tokens)
- Продакшен-серверы: Nginx/Gunicorn
auth_django/ # Корневая директория проекта
│
├── backend/ # Backend-часть на Django
│ │
│ ├── config/ # Основной конфигурационный модуль Django
│ │ ├── settings.py # Настройки проекта
│ │ ├── urls.py # Корневая конфигурация URL
│ │ ├── asgi.py # ASGI-конфигурация
│ │ ├── wsgi.py # WSGI-конфигурация
│ │ ├── api_keys.py # View для определения API-ключа для доступа разработчиков к API размещенного в .env
│ │ └── logging.py # Конфигурация логов
│ │
│ ├── authentication/ # Модули аутентификации (основная бизнес-логика)
│ │ │
│ │ ├── custom_auth/ # Кастомная аутентификация (логин/логаут)
│ │ │ ├── urls.py # Маршруты: /login/, /logout/ и т.д.
│ │ │ ├── views.py # CustomLoginView, CustomLogoutView, CustomPasswordResetView
│ │ │ ├── validators.py # Валидаторы паролей/логинов
│ │ │ └── tests/ # Тесты custom_auth-функционала
│ │ │ ├── test_serializers.py
│ │ │ └── test_views.py
│ │ │
│ │ ├── oauth/ # Модуль OAuth аутентификации (google и yandex)
│ │ │ ├── oauth_config.py # Конфигурации OAuth-провайдеров
│ │ │ ├── serializers.py # Сериализаторы для OAuth
│ │ │ ├── urls.py # Маршруты OAuth (/oauth/google/ и др.)
│ │ │ ├── views.py # View-классы для OAuth
│ │ │ ├── models.py # Модель для OAuth
│ │ │ ├── admin.py # Админка для OAuth
│ │ │ ├── providers/ # Отдельные провайдеры
│ │ │ │ ├── google.py
│ │ │ │ └── yandex.py
│ │ │ └── tests/ # Тесты OAuth-функционала
│ │ │ ├── test_serializers.py
│ │ │ └── test_views.py
│ │ │
│ │ └── jwt/ # Модуль JWT аутентификации
│ │ ├── jwt_config.py # Конфигурации JWT-токенов
│ │ ├── serializers.py # Сериализаторы JWT-токенов
│ │ ├── urls.py # Маршруты JWT (/jwt/create/ и др.)
│ │ ├── views.py # View-классы для работы с токенами JWT
│ │ ├── admin.py # ← опционально для BlacklistedToken
│ │ └── tests/ # Тесты JWT-функционала
│ │ ├── test_serializers.py
│ │ └── test_views.py
│ │
│ ├── users/ # Приложение работы с пользователями
│ │ ├── admin.py # Админка для пользователей
│ │ ├── models.py # Кастомная модель пользователя
│ │ ├── serializers.py # Сериализаторы пользователей
│ │ ├── urls.py # URL для работы с пользователями
│ │ ├── views.py # View для операций с пользователями
│ │ ├── validators.py # Кастомные валидаторы
│ │ └── tests/ # Тесты пользовательского функционала
│ │ ├── test_serializers.py
│ │ └── test_views.py
│ │
│ ├── docs/ # Документация API
│ │ ├── schemas.py # Схемы для документации
│ │ └── docs_config.py # Конфигурация Swagger/Redoc
│ │
│ ├── static/ # Статические данные
│ │
│ ├── media/ # Изображения
│ │
│ ├── requirements.txt # Зависимости проекта
│ ├── manage.py # Утилита управления Django
│ ├── Dockerfile # Конфигурация Docker-образа
│ └── .dockerignore # Исключения для Docker-сборки
│
├── nginx/ # Конфигурация Nginx
│ ├── nginx.conf # Основной конфиг Nginx
│ └── Dockerfile # Сборка Nginx-образа
│
├── .github/workflows/ # CI/CD автоматизация
│ └── ci-cd.yml # Конфигурация GitHub Actions
│
├── docker-compose.yml # Конфигурация для разработки
├── docker-compose.prod.yml # Конфигурация для продакшена
├── .env.example # Пример переменных окружения
├── .gitignore # Игнорируемые файлы Git
└── README.md # Основная документация проекта
Важная информация: Закройте лишние эндпоинты (например, /admin/ только для вашего IP).
Добавьте ключ в заголовок запроса:
curl -X GET http://ваш-сервер/api/data/ \
-H "X-API-KEY: your_secret_key_123"