이전 글에서 아주 간단한 수준의 회원가입 로그인을 구현했다. 하지만 로그인에 성공하고 나서 처리가 없어 실제로 쓸 순 없다.
그래서 이번엔 JWT 방식으로 로그인에 성공하면 토큰을 부여해주겠다.
이전글
➡️ 기본 게시판 CRUD API 구현 실습
2023.07.28 - [Python/FastAPI] - [FastAPI ①]게시판 CRUD API 구현 실습 (SQLAlchemy / Rest API / 예외 처리)
또 Spring security JWT 로그인 실습에 대한 내용이 궁금하신 분들은 참고하세요
➡️ Spring security JWT 로그인
1. 로그인시 검증 후 access_token 발급
현재의 로그인 로직은
1. 회원 존재 여부 확인
2. 확인 후 비밀번호 비교 체크
뿐이다.
검증은 어느 정도 끝났고 회원 상태가 활성인 회원인지도 체크 후에 엑세스 토큰을 발행하겠다.
일단 python에서 jwt를 사용하기 위해서 패키지를 추가해줬다.
# jwt사용
poetry add python-jose
# 환경 변수로 키값 관리
poetry add python-dotenv
jwt를 사용하기 위해선
서버측의 비밀키와 알고리즘, 만료 시간을 설정해줘야한다.
이 상수는 민감한 정보이기 때문에 환경변수로 관리하기 위해 python-dotenv를 사용한다.
https://pypi.org/project/python-dotenv/
SECRET_KEY = "fske256d3433kf2@er454ddd!35435rd!!!dkzfefdsdfjldkjf!dxfd5dsfx2432dszdfdsfsfs12xdfds2sa"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 60
일단 .env 파일을 만들어
jwt 관련 상수를 선언해준다.
그리고
load_dotenv로 필요한 키들을 가져와 사용한다.
이제 응답에 엑세스 토큰을 담아 보낸다.
Token을 스키마에 추가해주고
리턴에 담아줬다.
실행해보자
access_token이 잘 생성되었다.
이제 이걸 어디에 저장할지는 프론트와 협의후 진행하면 된다.
2. 쿠키에 access_token 저장
만약 cookie에 저장한다고 하면
Response를 통해 set_cookie를 해주면 된다.
이렇게 다시 실행해보면
쿠키가 브라우저에 저장이 된다.
3. 로그아웃
로그아웃도 생성해본다.
일단 들어온 요청에 따라 쿠키에서 access_token을 뽑아내 삭제해야한다.
Request를 가져와서 쿠키를 뽑아
해당 이름의 쿠키를 삭제해주면 된다.
실행해보면
access_token이 잘 삭제된 걸 볼 수 있다.
코드
https://github.com/recordbuffer/TIL/tree/main/FastAPI
참고
https://fastapi.tiangolo.com/ko/tutorial/security/oauth2-jwt/
'Python > FastAPI' 카테고리의 다른 글
[FastAPI] OAuth2.0 소셜 로그인 회원가입 구현 SPA (구글 로그인 / 네이버 로그인 / 카카오 로그인) (1) | 2024.09.17 |
---|---|
[FastAPI ②] 일반 회원가입, 로그인 구현 실습 (Rest API / 회원 가입 유효성 검증) (0) | 2023.08.17 |
[FastAPI ①]게시판 CRUD API 구현 실습 (SQLAlchemy / Rest API / 예외 처리) (0) | 2023.07.28 |
[FastAPI] 파이썬 경량 프레임워크 (기본 개념 / 입문 / 개발 환경 구성) (0) | 2023.06.06 |
댓글