
Привет! Меня зовут Алексей, и мне приятно поделиться своим опытом создания приложения на FastAPI с аутентификацией и авторизацией пользователя, используя асинхронность․ Продолжайте чтение, и я расскажу вам, как это сделать шаг за шагом․Шаг 1⁚ Установка FastAPI и необходимых зависимостей
Для начала вам потребуется установить FastAPI и его зависимости․ Лучший способ сделать это ― это использовать pip, популярный инструмент для установки пакетов Python․ Откройте терминал и выполните следующую команду⁚
bash
pip install fastapi uvicorn
FastAPI позволяет создавать веб-приложения на основе Python, а Uvicorn ⎻ это ASGI-сервер (ASGI ― это асинхронный интерфейс сервера для Python)․ Установка завершена? Отлично! Перейдем к следующему шагу․Шаг 2⁚ Создание моделей пользователя и токена
Теперь создадим две модели⁚ User и Token․ Модель User будет представлять данные о пользователях, а модель Token ― данные о токенах аутентификации․python
from pydantic import BaseModel
class User(BaseModel)⁚
username⁚ str
password⁚ str
class Token(BaseModel)⁚
access_token⁚ str
token_type⁚ str
Мы определили два поля в модели User⁚ username и password․ Token имеет два поля⁚ access_token и token_type․Шаг 3⁚ Создание контроллера (англ․ controller)
Создайте файл с именем main․py и добавьте следующий код⁚
python
from fastapi import FastAPI, Depends, HTTPException
from fastapi․security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
app FastAPI
oauth2_scheme OAuth2PasswordBearer(tokenUrl″token″)
@app․post(″/token»)
async def login(form_data⁚ OAuth2PasswordRequestForm Depends)⁚
if form_data․username ! ″myuser″ or form_data․password ! ″mypass″⁚
raise HTTPException(status_code400, detail″Invalid username or password″)
return {″access_token″⁚ ″myaccess″, ″token_type″⁚ ″bearer″}
@app․get(″/protected»)
async def protected(token⁚ str Depends(oauth2_scheme))⁚
if token ! ″myaccess″⁚
raise HTTPException(status_code401, detail″Invalid token″)
return {″message″⁚ ″Hello World″}
В этом коде определены два маршрута⁚ один для аутентификации (/token) и другой для защищенного доступа (/protected)․ В функции login мы проверяем, правильно ли указаны имя пользователя и пароль, и если все в порядке, то выдаем токен․ В функции protected мы проверяем, является ли предоставленный токен действительным․Шаг 4⁚ Запуск сервера
Теперь мы готовы запустить сервер с нашим приложением․ Вернитесь в терминал и выполните следующую команду⁚
bash
uvicorn main⁚app —reload
Эта команда запустит сервер Uvicorn с нашим приложением․Шаг 5⁚ Проверка работы
Откройте браузер и перейдите по адресу http://localhost:8000/․ Вы должны увидеть документацию Swagger, которая автоматически сгенерирована FastAPI․ Перейдите на вкладку ″Authorize″ и введите следующее значение в поле ″Value″⁚ ″Bearer myaccess″․ Нажмите кнопку ″Authorize″ и затем выполните запрос GET для маршрута /protected․ Если все настроено правильно, вы должны получить ответ ″{ ″message″⁚ ″Hello World″ }″․
Поздравляю! Вы успешно создали приложение на FastAPI с аутентификацией и авторизацией пользователя, используя асинхронность․ Это только базовая реализация, но вы можете настроить ее и добавить больше функций по вашему усмотрению․ Удачи в вашем новом проекте на FastAPI!