1. JWT(Json Web Token) 이해하기
잘 정리된 블로그를 참고하자
2. Flask에서 JWT 사용하기
flask-jwt-extended 라이브러리 설치
pip install flask-jwt-extended
3. 자주 쓰는 기능
(1) create_access_token()
- 토큰화 해주는 함수
- expires_delta 파라미터로 유효기간을 지정할 수 있다.
- 기간이 지나면 토큰이 만료되어 사용할 수 없다.
from flask_jwt_extended import create_access_token
import datetime
# user_id 변수를 토큰화 한다.
create_access_token(user_id)
# 10일간 사용가능
create_access_token(user_id, expires_delta=datetime.timedelta(days=10))
# 30분간 사용가능
create_access_token(user_info['id'], expires_delta=datetime.timedelta(minutes=30))
(2) @jwt_required()
- 헤더로 수신한 access 토큰의 유효성을 검증하는 데코레이터
- 만료되었거나 유효하지 않은 토큰이라면 요청을 거부한다.
- 파라미터로 optional=True를 주면 토큰이 없어도 된다.
from flask_jwt_extended import jwt_required
# 메소드 정의 위에 작성
# 유효한 토큰이 아니면 아래 있는 메소드는 실행 되지 않음
@jwt_required()
def post(self):
pass
@ jwt_required()
def put(self, recipe_id):
pass
(3) get_jwt_identity()
- 헤더에 JWT 토큰이 있으면 토큰 정보를 받아와서,
토큰화 되기 전 원래 값을 리턴해준다.(복호화)
from flask_jwt_extended import get_jwt_identity
@jwt_required()
def post(self):
# 토큰화 되어 있던 정보를 원상복구해서 리턴
user_id = get_jwt_identity()
...
(4) JWTManager()
- JWTManager initialize를 해줘야 Flask 인스턴스에서 jwt를 사용할 수 있다.
from flask import Flask
from flask_jwt_extended import JWTManager
app = Flask(__name__)
jwt = JWTManager(app)
'REST API' 카테고리의 다른 글
API서버 - Flask 쿼리스트링(Query String)을 사용한 API (0) | 2023.01.06 |
---|---|
Flask - PROPAGATE_EXCEPTIONS에 대한 이해 (0) | 2023.01.06 |
API서버 - Flask JWT를 사용한 로그아웃 API 만들기 (0) | 2023.01.05 |
API서버 - Flask JWT를 사용해 로그인 한 유저만 처리하는 API 만들기 (0) | 2023.01.05 |
API서버 - Flask JWT를 사용한 로그인 API 만들기 (0) | 2023.01.05 |