Реализация конечной точки:
Код: Выделить всё
@app.get("/")
async def home(user: Annotated[User, Depends(authenticate_request(Request))]):
"""
status _summary_
Returns status message if service is running
"""
if isinstance(user, User):
return {"Welcome, service is running ok!"}
raise HTTPException(
status_code=401,
detail="User not authorized!",
)
Код: Выделить всё
def authenticate_request(request: Request) -> User:
cookie1 = request.cookies.get("x")
cookie2 = request.cookies.get("y")
if cookie1 is not None and cookie2 is not None:
tenant = get_tenant(request)
if user := authenticate_cookies(cookie1, cookie2, tenant):
if not tenant.startswith(user.tenant):
print("Unauthorized: Token hostname mismatch")
raise Exception("Token hostname mismatch")
return user
print("Unauthorized: please login")
raise HTTPException(status_code=401, detail="Unauthorized: please login")
async def home(request: Request):
"""
status _summary_
Returns status message if service is running
"""
user = authenticate_request(request=request)
if isinstance(user, User):
return {"Welcome, service is running ok!"}
raise HTTPException(
status_code=401,
detail="User not authorized!",
)
< /code>
Это работает правильно. Если нет действительных cookie, не предоставлено, 401 возвращается. Основываясь на этом, я прихожу к выводу, что моя функция Authenticate_Request () работает правильно.>
Подробнее здесь: https://stackoverflow.com/questions/764 ... depends-in