파이썬 Flask를 사용하여 JWT 토큰 강제 만료 시간 설정 방법과 로그 기록 정책 설정 방법

1. JWT 토큰 강제 만료 시간 설정 방법

JWT 토큰은 보안을 위해 일정 시간 이후에 만료되도록 설정할 수 있습니다. Flask에서는 exp(expiration)이라는 클레임을 사용하여 토큰의 만료 시간을 설정할 수 있습니다. 이를 이용하여 JWT 토큰의 강제 만료 시간을 설정하는 방법은 다음과 같습니다:

from datetime import datetime, timedelta
import jwt

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'

@app.route('/login', methods=['POST'])
def login():
    # 로그인 처리 로직

    # 토큰 생성
    expiration_time = datetime.utcnow() + timedelta(hours=1)  # 1시간 후 만료
    token = jwt.encode({'exp': expiration_time}, app.config['SECRET_KEY'], algorithm='HS256')

    return {'token': token}

@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
    # 토큰이 유효한지 검증 및 보호된 API 로직
    return "Protected API"

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

위 코드에서는 exp 클레임으로 토큰의 만료 시간을 설정합니다. datetime.utcnow() 함수를 사용하여 현재 시간을 구하고, timedelta(hours=1)을 사용하여 1시간 후의 시간을 계산합니다. 이후 jwt.encode() 함수를 사용하여 토큰을 생성합니다.

2. 로그 기록 정책 설정 방법

로그 기록은 애플리케이션의 동작을 추적하고 디버깅하는 데에 매우 중요합니다. Flask에서는 다양한 방법으로 로그를 설정할 수 있습니다. 여기서는 logging 모듈을 사용하여 로그 기록 정책을 설정하는 방법을 안내하겠습니다:

import logging
from logging.handlers import RotatingFileHandler

app = Flask(__name__)

def configure_logging():
    # 로그 기록 정책 설정
    handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=1)
    handler.setLevel(logging.INFO)
    app.logger.addHandler(handler)

@app.route('/')
def index():
    app.logger.info('This is an info log')
    app.logger.warning('This is a warning log')
    app.logger.error('This is an error log')
    return 'Hello World'

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

위 코드에서는 configure_logging() 함수를 호출하여 로그 기록 정책을 설정합니다. RotatingFileHandler를 사용하여 로그 파일을 생성하고, maxBytesbackupCount 매개변수로 로그 파일의 크기와 백업 파일의 개수를 제한할 수 있습니다. setLevel() 함수를 사용하여 로그의 레벨을 설정하고, app.logger.addHandler()로 핸들러를 추가합니다.

위 예제에서는 app.logger.info(), app.logger.warning(), app.logger.error() 함수를 사용하여 각각 정보, 경고, 오류 수준의 로그를 기록합니다. 로그 파일은 app.log로 생성되며, 최대 크기는 10000바이트로 설정되어 있고, 백업 파일은 최대 1개 생성됩니다.


#Python #Flask #JWT #로그기록