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()
'RestFul API' 카테고리의 다른 글
[RestFul API] 회원가입 / 로그인 API에서, 토큰 생성해서 처리하는 방법 (0) | 2024.05.22 |
---|---|
[RestFul API] Python MySQL Connector 특정값 삭제(Delete)하기 (0) | 2024.05.21 |
[RestFul API] Python에서 MySQL DB에 데이터 저장(POST) 하는 방법 (0) | 2024.05.21 |
[RestFul API] Config 파일 생성하여 연동하기, Github 리포지토리 private 변경하기 (0) | 2024.05.21 |
[RestFul API] 가상환경 설정 + Flask 프레임워크와 Flask-restful 라이브러리 설치 (0) | 2024.05.20 |