FastAPI Custom HTTPException for Auth - 50

2023. 1. 8. 01:47·Develop/FastAPI
728x90
SMALL
예외 처리를 함수로 만들어서 코드를 가독성이 좋게 만드는 것이 목표

 

1. 라이브러리 import

#status 삽입
from fastapi import FastAPI, Depends, HTTPException, status

 

2. user 인증 에러 함수

def get_user_exception():
    credentials_exception = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="Could not validate credentials",
        headers={"WWW-Authenticate":"Bearer"},
    )
    return credentials_exception

 

3. token 인증 에러 함수

def token_exception():
    token_exception_response = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="Incorrect username or password",
        headers={"WWW-Authenticate":"Bearer"},
    )
    return token_exception_response

 

4. token 인증 API 수정

@app.post("/token")
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends(),
                                 db: Session = Depends(get_db)):
    user = authenticate_user(form_data.username, form_data.password, db)
    if not user:
        return token_exception()
    token_expires = timedelta(minutes=20)
    token = create_access_token(user.username,
                                user.id,
                                expires_delta=token_expires)
    return {"token": token}

 

5. 사용자 인증 함수 수정

async def get_current_user(token: str = Depends(oauth2_bearer)):
    try:
        payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
        username: str = payload.get("sub")
        user_id: int = payload.get("id")
        if username is None or user_id is None:
            raise get_user_exception()
        return {"username": username, "id": user_id}
    except JWTError:
        return get_user_exception()

 

728x90
SMALL
저작자표시 비영리 변경금지 (새창열림)

'Develop > FastAPI' 카테고리의 다른 글

FastAPI 데이터베이스 내 User와 Todo의 관계 설정 - 52  (0) 2023.01.10
FastAPI Postman 설치 / 사용법(GET kakao 검색) - 51  (2) 2023.01.09
FastAPI JSON Web Token(JWT) 디코딩 함수 구현 - 49  (0) 2023.01.08
FastAPI JSON Web Token(JWT) 생성 - 48  (0) 2023.01.08
FastAPI 사용자 인증 - 47  (0) 2023.01.07
'Develop/FastAPI' 카테고리의 다른 글
  • FastAPI 데이터베이스 내 User와 Todo의 관계 설정 - 52
  • FastAPI Postman 설치 / 사용법(GET kakao 검색) - 51
  • FastAPI JSON Web Token(JWT) 디코딩 함수 구현 - 49
  • FastAPI JSON Web Token(JWT) 생성 - 48
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
FastAPI Custom HTTPException for Auth - 50
상단으로

티스토리툴바