백엔드
JWT 로그아웃 API 만들기
Cong_S
2022. 6. 21. 10:15
로그인이 되었다면 로그아웃도 할 수 있어야한다.
로그아웃 API를 만들어보자.
1. 제일 먼저 로그아웃 클래스를 만든다.
함수가 시작하기 전에 jwt_required 붙여줌
그 의미는 로그인한 유저만 로그아웃할 수 있기 때문이다.
jwt_blacklist = set()
2. blacklist set을 만들어 준다.
def post(self):
jti = get_jwt()['jti']
print(jti)
jwt_blacklist.add(jti)
return
3. 함수는 다음과 같이 작성해준다.
@jwt.token_in_blocklist_loader
def check_if_token_is_revoked(jwt_header, jwt_payload):
jti = jwt_payload['jti']
return jti in jwt_blacklist
4. app.py 파일 (리소스를 모아 실행하는 파일)에 가서
JWTManager(app)
바로 밑에 위와 같은 코드를 작성해준다.
(위 코드는 처음부터 정해져 있는 코드이므로 따로 바꾸지말고 사용하자. )
이러면 완성이다.
일련의 과정을 풀이해보면 다음과 같다.
로그인이 된 토큰이 있다.
이 때 로그아웃 요청이 들어오면 해당 토큰 jwt에서 jti 를 뽑아서
jwt_blacklist 라는 set에 추가해준다.
이제 글을 작성한다던가 하는 로그인 권한이 필요한 기능을 수행할 때에
jwt_blacklist의 set을 훑게된다.
만약 같은 jti가 있다면 해당 토큰으
Token has been revoked (토큰이 만료됨.)이라는 문구와 함께 권한이 부여되지 않는다.