Eski 403 Kimlik Doğrulama Hata Durum Kodlarını Kullanma¶
🌐 Translation by AI and humans
This translation was made by AI guided by humans. 🤝
It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖
You can improve this translation by helping us guide the AI LLM better.
FastAPI 0.122.0 sürümünden önce, entegre security yardımcı araçları başarısız bir kimlik doğrulama (authentication) sonrasında client'a bir hata döndüğünde HTTP durum kodu olarak 403 Forbidden kullanıyordu.
FastAPI 0.122.0 sürümünden itibaren ise daha uygun olan HTTP durum kodu 401 Unauthorized kullanılmakta ve HTTP spesifikasyonlarına uygun olarak response içinde anlamlı bir WWW-Authenticate header'ı döndürülmektedir: RFC 7235, RFC 9110.
Ancak herhangi bir nedenle client'larınız eski davranışa bağlıysa, security class'larınızda make_not_authenticated_error metodunu override ederek eski davranışa geri dönebilirsiniz.
Örneğin, varsayılan 401 Unauthorized hatası yerine 403 Forbidden hatası döndüren bir HTTPBearer alt sınıfı oluşturabilirsiniz:
from typing import Annotated
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
app = FastAPI()
class HTTPBearer403(HTTPBearer):
def make_not_authenticated_error(self) -> HTTPException:
return HTTPException(
status_code=status.HTTP_403_FORBIDDEN, detail="Not authenticated"
)
CredentialsDep = Annotated[HTTPAuthorizationCredentials, Depends(HTTPBearer403())]
@app.get("/me")
def read_me(credentials: CredentialsDep):
return {"message": "You are authenticated", "token": credentials.credentials}
İpucu
Fonksiyonun exception instance'ını döndürdüğüne dikkat edin; exception'ı raise etmiyor. Raise işlemi internal kodun geri kalan kısmında yapılıyor.