Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI: аутентификация и ролевой доступ

Данный проект демонстрирует реализацию бэкенд-сервиса на FastAPI с использованием JWT-аутентификации (с поддержкой Basic Auth для получения токена) и ролевой модели авторизации.

Функциональность

  • Регистрация нового пользователя с паролем (хеширование через sha256_crypt).

  • Логин по логину и паролю (Basic Auth) с выдачей JWT-токена (время жизни — 5 минут).

  • Защищённые эндпоинты с проверкой роли через кастомный декоратор @PermissionChecker.

  • Гостевой доступ — если токен невалиден или отсутствует, пользователь автоматически получает роль guest.

  • Лимитирование запросов настраивается индивидуально для каждой роли:

    • admin → 1000 запросов в минуту;
    • user → 20 запросов в минуту;
    • guest → 5 запросов в минуту.

Установка и запуск

1. Клонируйте репозиторий

git clone <url-репозитория>
cd <папка-проекта>

2. Создайте виртуальное окружение

python -m venv venv
source venv/bin/activate   # для Linux/Mac
venv\Scripts\activate      # для Windows

3. Установите зависимости

pip install -r requirements.txt

4. Запустите сервер

uvicorn main:app --reload

Приложение будет доступно по адресу: http://127.0.0.1:8000

Документация Swagger UI: http://127.0.0.1:8000/docs

Эндпоинты

Метод URL Доступ Описание
POST /registration публичный Создание нового пользователя
POST /login публичный Аутентификация (Basic Auth) → получение JWT
GET /admin_endpoint admin Пример защищённого ресурса для администраторов
POST /user_endpoint user Пример защищённого ресурса для зарегистрированных пользователей
GET /guest_endpoint guest Доступен всем (даже без токена)

Зависимости

Основные библиотеки:

  • fastapi — веб-фреймворк

  • uvicorn — ASGI-сервер

  • pydantic — валидация данных

  • PyJWT — работа с JWT

  • passlib — хеширование паролей

  • slowapi — ограничение частоты запросов

Полный список см. в requirements.txt.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages