RestFul API

[RestFul API] Flask에서 JWT 설치방법 및 설정방법

Mei99 2024. 5. 22. 11:52

JWT(JSON Web Token)

- 클라이언트와 서버간에 정보를 안전하게 전송하기 위한 인증토큰

- 보안상 내 아이디로 로그인한 기기마다 인증토큰이 달라서, 기기마다 로그아웃을 별도로 할 수 있다.

 

Flask에서 JWT 설치 및 설정방법

1. VSC-cmd 에 라이브러리 설치

pip install flask-jwt-extended  

 

 

2. VSC config.py 에 JWT 관련 변수 셋팅

JWT_SECRET_KEY  : 설정값으로 노출되면 안됨.

JWT_ACCESS_TOKEN_EXPIRES : 로그인 후 자동 로그아웃 여부,  False = 자동 로그아웃 설정 안함, True = 자동 로그아웃 설정

PROPAGATE_EXCEPTIONS : 디버깅, JWT에 문제가 발생하면 알려달라는 의미

 class Config :
   
     # JWT 관련 변수 셋팅
     JWT_SECRET_KEY = 'abc1234'
     JWT_ACCESS_TOKEN_EXPIRES = False
     PROPAGATE_EXCEPTIONS = True

 

 

 

3. VSC app.py에서 라이브러리 추가설치 및 JWT 작동할 수 있게 환경변수 추가 셋팅

from flask_jwt_extended import JWTManager
from config import Config

 

app = Flask(__name__)

# 환경변수 셋팅
app.config.from_object(Config)
# JWT 매니저 초기화
jwt = JWTManager(app)

api = Api(app)

 

 

전체 코드

from flask import Flask
from flask_restful import Api
from resources.recipe import RecipeListResource, RecipeResource, RecipepulishResource
from resources.user import UserLoginResource, UserRegisterResource
from flask_jwt_extended import JWTManager
from config import Config


app = Flask(__name__)

# 환경변수 셋팅
app.config.from_object(Config)
# JWT 매니저 초기화
jwt = JWTManager(app)

api = Api(app)

# 경로(path)와 리소스(API 코드)를 연결한다.
api.add_resource( RecipeListResource  , '/recipes')
api.add_resource(RecipeResource, '/recipes/<int:recipe_id>')
# <int:recipe_id> : flask 프레임워크 문법
api.add_resource(RecipepulishResource, '/recipes/<int:recipe_id>/publish')
api.add_resource(UserRegisterResource, '/users/register')
api.add_resource(UserLoginResource, '/users/login')


if __name__ == '__main__' :
    app.run()