You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.4 KiB

古い 403 認証エラーのステータスコードを使う

FastAPI バージョン 0.122.0 より前は、統合されたセキュリティユーティリティが認証に失敗してクライアントへエラーを返す際、HTTP ステータスコード 403 Forbidden を使用していました。

FastAPI バージョン 0.122.0 以降では、より適切な HTTP ステータスコード 401 Unauthorized を使用し、HTTP 仕様に従ってレスポンスに妥当な WWW-Authenticate ヘッダーを含めます。RFC 7235, RFC 9110

しかし、何らかの理由でクライアントが従来の挙動に依存している場合は、セキュリティクラスでメソッド make_not_authenticated_error をオーバーライドすることで、その挙動に戻せます。

たとえば、既定の 401 Unauthorized エラーの代わりに 403 Forbidden エラーを返す HTTPBearer のサブクラスを作成できます:

{* ../../docs_src/authentication_error_status_code/tutorial001_an_py310.py hl[9:13] *}

/// tip | 豆知識

この関数は例外インスタンスを返す点に注意してください。ここでは例外を送出しません。送出は内部の他のコードで行われます。

///