반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스트림릿 기본
- 자바스크립트
- 판다스
- 웹대시보드 제작
- 웹대시보드 기초
- streamlit
- 자바공부
- 판다스공부
- Streamlit기초
- Flutter
- 안드로이드 스튜디오
- 자바초보
- 파이썬공부
- 스트림릿
- java
- Android
- MySQL
- Streamlit기본
- db
- 데이터베이스
- 자바
- RESTful API
- 자바기초
- 자바프로그래밍
- 안드로이드 앱 개발
- JavaScript
- 파이썬
- serverless
- Pandas
- 자바스크립트 공부
Archives
- Today
- Total
ruriruriya
[RESTful API] Python Flask - JWT 로그아웃 설정 방법 본문
반응형
회원가입/로그인/로그인 토큰 유효기간 설정까지 해보았다.
이제는 발급된 JWT로 해당 유저의 로그아웃을 해보자.
1. app.py 설정
JWT 매니저를 변수에 넣어 초기화한다.
그리고 아래 로그아웃 시
실행되지 않도록 하는 코드를 추가한다.
@jwt.token_in_blocklist_loader
def check_if_token_is_revoked(jwt_header, jwt_payload) :
jti = jwt_payload['jti']
return jti in jwt_blocklist
from flask import Flask
from flask_jwt_extended import JWTManager
from flask_restful import Api
from config import Config
from resources.recipe import RecipeListResource, RecipeMeListResource, RecipePublishResource, RecipeResource
from resources.user import UserLoginResource, UserLogoutResource, UserRegisterResource
# 로그아웃 관련된 임포트문
from resources.user import jwt_blocklist
# 기본 구조
app = Flask(__name__)
# 환경변수 세팅
app.config.from_object(Config)
# JWT 매니저를 초기화
jwt = JWTManager(app)
# 로그아웃된 토큰으로 요청하는 경우,
# 실행되지 않도록 처리하는 코드.
@jwt.token_in_blocklist_loader
def check_if_token_is_revoked(jwt_header, jwt_payload) :
jti = jwt_payload['jti']
return jti in jwt_blocklist
api = Api(app)
api.add_resource(UserRegisterResource,'/user/register')
api.add_resource(UserLoginResource,'/user/login')
api.add_resource(UserLogoutResource,'/user/logout')
if __name__=='__main__':
app.run()
2. 로그아웃 함수 추가
해당 클래스에 로그아웃 함수를 추가한다.
import datetime
from flask import request
from flask_jwt_extended import create_access_token, get_jwt, jwt_required
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error
from email_validator import validate_email, EmailNotValidError
from utils import check_password, hash_password
jwt_blocklist = set()
class UserLogoutResource(Resource) :
@jwt_required()
def delete(self) :
jti = get_jwt()['jti']
print(jti)
jwt_blocklist.add(jti)
return {"result" : "success"}, 200
3. 포스트맨에서 테스트
로그아웃 API를 새로 생성하여 URL 추가하고
Headers의 Authorization 키 값으로 생성된 토큰을 입력한다.
그리고 Send 하면 로그아웃이 성공적으로 되었단 메세지를 볼 수 있다.
반응형