카테고리 없음

Flask에서 JWT를 활용한 로그아웃 기능

zzuvely 2022. 6. 21. 10:13

플라스크에서 jwt 로그아웃 기능

 

1) 로그아웃 기능을 하는 클래스 생성

 

### user.py

# 로그아웃 되었는지 확인해줌
# set에 토큰이 있으면 로그아웃한 유저
jwt_blacklist = set()

# 로그아웃 기능을 하는 클래스
class UserLogoutResource(Resource) :
    @jwt_required()
    def post(self) :
        
        # jti : token 구별을 위한 unique id
        # 헤더 부분에 jti를 가져와
        jti = get_jwt()['jti']
        print(jti)

        # jwt_blacklist에 jti 값을 넣어줌
        jwt_blacklist.add(jti)

        return

 

2) 글을 생성하거나 수정할 때 사용자가 로그아웃되었는지 확인해준다.

 

### app.py

from resources.user import UserLogoutResource, jwt_blacklist

# 로그아웃 된 토큰이 들어있는 set을 jwt에 알려준다.
# JWT가 취소되었는지 확인하는 데 사용되는 콜백 함수를 설정한다.
@jwt.token_in_blocklist_loader
def check_if_token_is_revoked(jwt_header, jwt_payload) :
    jti = jwt_payload['jti']
    return jti in jwt_blacklist

 

로그아웃 한 상태에서 레시피를 생성할 경우