РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
218 of 307 menu

Атрибут auto_error

Атрибут auto_error принадлежит классу OAuth2PasswordBearer и задаётся при создании экземпляра через одноимённый параметр. Он принимает булево значение и по умолчанию равен True. Когда атрибут равен True, при отсутствии заголовка Authorization или при неверной схеме FastAPI сам возвращает ответ 401 Unauthorized с заголовком WWW-Authenticate. Когда атрибут равен False, зависимость вместо ошибки возвращает None, и разработчик сам решает, как обработать отсутствие токена.

Синтаксис

oauth2_scheme = OAuth2PasswordBearer( tokenUrl='token', auto_error=True )

Пример

Давайте создадим экземпляр OAuth2PasswordBearer с атрибутом auto_error равным True и защитим маршрут:

from fastapi import FastAPI, Depends from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer( tokenUrl='token', auto_error=True ) @app.get('/items/') def read_items(token: str = Depends(oauth2_scheme)): return {'token': token}

Если обратиться к адресу /items/ без заголовка Authorization, FastAPI автоматически вернёт ошибку:

{"detail": "Not authenticated"}

Пример

Давайте создадим экземпляр OAuth2PasswordBearer с атрибутом auto_error равным False и обработаем отсутствие токена вручную:

from fastapi import FastAPI, Depends, HTTPException from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer( tokenUrl='token', auto_error=False ) @app.get('/items/') def read_items(token: str = Depends(oauth2_scheme)): if token is None: raise HTTPException( status_code=401, detail='Token is missing' ) return {'token': token}

Если обратиться к адресу /items/ без заголовка Authorization, сработает наша проверка:

{"detail": "Token is missing"}

Смотрите также

  • класс OAuth2PasswordBearer,
    который извлекает Bearer-токен из заголовка Authorization
  • атрибут tokenUrl,
    который задаёт адрес для получения токена
  • метод __call__,
    который вызывается как зависимость и возвращает токен
  • функция Depends,
    которая внедряет зависимость в обработчик маршрута
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить