from flask import Flask
from flask_jwt_extended import JWTManager
from flask_restful import Api
from config import Config
from resources.recipe import RecipeListResource
from resources.recipe_info import RecipeResource
from resources.recipe_publish import RecipePublishResource
from resources.user import UserLoginResource, UserLogoutResource, UserRegisterResource, jwt_blacklist
app = Flask(__name__)
# 환경변수 셋팅
app.config.from_object(Config)
# JWT 토큰 라이브러리 만들기
jwt = JWTManager(app)
# 로그아웃 된 토큰이 들어있는 set을, 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
api = Api(app)
# 경로와 리소스(API 코드)를 연결한다.
api.add_resource(RecipeListResource, '/recipes')
api.add_resource(RecipeResource, '/recipes/<int:recipe_id>')
api.add_resource(RecipePublishResource, '/recipes/<int:recipe_id>/publish')
api.add_resource(UserRegisterResource, '/users/register')
api.add_resource(UserLoginResource, '/users/login')
api.add_resource(UserLogoutResource, '/users/logout')
if __name__ == "__main__":
app.run()
@jwt.token_in_blocklist_loader를 적고 함수를 만든다.
로그아웃된 토큰이 들어있는 set을, jwt에 알려준다.
# 로그아웃 기능을 하는 클래스
class UserLogoutResource(Resource):
@jwt_required()
def post(self):
jti = get_jwt()['jti']
print(jti)
jwt_blacklist.add(jti)
return {'result', 'success'}, 200
로그아웃 기능을 하는 클래스다. @jwt_required를 적어주고 jti를 만들고 집합에 넣어준다.
'REST API' 카테고리의 다른 글
boto3로 Rekognition 사용하기 (0) | 2022.06.24 |
---|---|
boto3로 s3 파일 업로드하기 (0) | 2022.06.24 |
Flask 토큰 유효기간 만료 시키는 방법 (0) | 2022.06.20 |
Flask에서 로그인한 유저만 처리할 수 있는 API에 토큰 적용하는 방법 (0) | 2022.06.20 |
Flask 회원가입/로그인 API에서, 토큰 생성해서 처리하는 방법 (0) | 2022.06.20 |