Coverage for docs_src / security / tutorial007_py310.py: 100%
18 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
1import secrets 1efghijklm
3from fastapi import Depends, FastAPI, HTTPException, status 1efghijklm
4from fastapi.security import HTTPBasic, HTTPBasicCredentials 1efghijklm
6app = FastAPI() 1efghijklm
8security = HTTPBasic() 1efghijklm
11def get_current_username(credentials: HTTPBasicCredentials = Depends(security)): 1efghijklm
12 current_username_bytes = credentials.username.encode("utf8") 1anobcpqdrs
13 correct_username_bytes = b"stanleyjobson" 1anobcpqdrs
14 is_correct_username = secrets.compare_digest( 1anobcpqdrs
15 current_username_bytes, correct_username_bytes
16 )
17 current_password_bytes = credentials.password.encode("utf8") 1anobcpqdrs
18 correct_password_bytes = b"swordfish" 1anobcpqdrs
19 is_correct_password = secrets.compare_digest( 1anobcpqdrs
20 current_password_bytes, correct_password_bytes
21 )
22 if not (is_correct_username and is_correct_password): 1anobcpqdrs
23 raise HTTPException( 1notpqrs
24 status_code=status.HTTP_401_UNAUTHORIZED,
25 detail="Incorrect username or password",
26 headers={"WWW-Authenticate": "Basic"},
27 )
28 return credentials.username 1abcd
31@app.get("/users/me") 1efghijklm
32def read_current_user(username: str = Depends(get_current_username)): 1efghijklm
33 return {"username": username} 1abcd