728x90
1. flask_jwt_extended 라이브러리를 이용하여 로그아웃 기능 구현하기
- 토큰을 이용하여 로그인 상태인 유저의 토큰을 파괴하여 로그아웃 상태로 변경
- 즉, 토큰이 유효할 때만 로그인 상태의 권한을 누릴 수 있음
- 토큰 (token)
- 유저의 식별 정보를 암호화 한 것
- 로그인을 통해 식별 정보를 토큰화
- 토큰을 이용하여 신원을 확인
- 로그아웃을 통해 토큰을 폐기
- 토큰 생성
- create_access_token( var ) : var의 데이터를 토큰화
- 토큰 식별
- jwt_required() : 토큰이 존재해야 다음의 코드를 수행
- 토큰 파괴
- @jwt.token_in_blocklist_loader : 토큰이 블록리스트에 존재하면 다음의 코드 수행
- blacklist/blocklist : 이전에는 blacklist를 사용하였으나 이름이 변경되어 blocklist를 사용
- payload : 토큰의 정보를 담고 있음
- jti : jwt 토큰의 고유 ID
- jwt_blocklist : 토큰의 파괴 기능을 담당
- @jwt.token_in_blocklist_loader : 토큰이 블록리스트에 존재하면 다음의 코드 수행
- 토큰 (token)
로그아웃 코드 작성 - user.py
### 로그아웃 ###
# 로그아웃된 토큰을 저장할 set 만든다.
jwt_blacklist = set()
class UserLogoutResource(Resource):
@jwt_required()
def post(self) :
jti=get_jwt()['jti']
print(jti)
jwt_blacklist.add(jti)
return {'result':'success'},200
로그아웃 코드 작성 - app.py
# 로그아웃된 토큰으로 요청하는 경우 처리하는 코드작성.
@jwt.token_in_blocklist_loader
def check_if_token_is_revoked(jwt_header,jwt_payload) :
jti = jwt_payload['jti']
return jti in jwt_blacklist
포스트맨을 이용한 테스트 - 로그인 API
- 로그인 이후 header에 토큰을 작성하고 내 레시피 가져오는 것에 성공한 모습
로그아웃 API를 이용해 로그아웃을 한 후에
같은 토큰으로 레시피 리스트 가져오기에 실패한 모습 => 로그아웃이 정상적으로 된 것을 확인.
'Rest API' 카테고리의 다른 글
API 서버 - 구글 코랩으로 추천기능 개발 이후 영화 추천하는 API 개발 ( 배포 ) (0) | 2023.01.09 |
---|---|
API 서버 - query string 페이징 처리 (0) | 2023.01.06 |
API - Flask_JWT 라이브러리 설치법과 사용법 (0) | 2023.01.05 |
API - Postman 다운로드 , 사용법 (0) | 2023.01.04 |
API서버 - 클라이언트가 원하는 값 삭제하기 (DELETE) (0) | 2023.01.04 |