forked from gnuboard/g6
-
Notifications
You must be signed in to change notification settings - Fork 0
240315 REST API
정훈 edited this page Mar 15, 2024
·
3 revisions
- JWT (Json Web Token)의 구조와 사용하기
- 우리는 왜 JWT를 사용하는가? / JWT 사용 이유
- 쉽게 알아보는 서버 인증 2편(Access Token + Refresh Token)
-
OAuth2 인증 정의
api\v1\auth\__init__.py- fastapi에서 제공하는 OAuth2PasswordBearer활용
-
사용자 인증 및 JWT 생성
api\v1\routers\auth.py- 패스워드 + 탈퇴/차단 + 이메일 인증여부 검증
- AccessToken, RefreshToken 생성
- RefreshToken은 Database에 저장
- AccessToken, RefreshToken 반환
- 사용자는 HEADER에 AccessToken을 전달
-
JWT(Access Token) 사용
api\v1\routers\member.py-
get_current_member() > oauth2_scheme를 통해서 Token 유효성을 검사함 - 유효한 토큰이면 JWT decode를 통해 내부에 저장된 mb_id를 통해 현재 접속한 회원을 가져옴
-
-
토큰 재발급
api\v1\auth\__init__.py- Access Token 만료 시, 새 토큰을 발행받아야한다.
- DB에 저장된 Refresh Token을 비교해서 Access Token을 재발급
- Access Token은 유효기간이 짧기 때문에 자주 재발급 해야한다. AccessToken 만료에 따른 자동으로 재발급 되는 로직을 개발 중
- Swagger UI
- 중복되는 로직을 어떻게 통합하면 좋을까?
- 입출력 데이터 (Temaplte - Form/Template, API - Body/Json)
- 별개의 router를 사용
- 예외처리 (Temaplte - AlertException, API - HTTPException)
-
lib\member_lib.py> Service 클래스 추가 및 예외처리를 상속받는 클래스
-
- 입출력 데이터 (Temaplte - Form/Template, API - Body/Json)
- URL
- 디렉토리 구조
- models 디렉토리? 기존 models.py와 헷갈릴 여지..
- 플러그인 형식
- 기존 템플릿 형식과 다르게 제공해야할 내용
- 이전/다음글
- 파일 업로드 등...