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

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

JWT (JSON Web Token)은 클라이언트와 서버 간에 인증 정보를 안전하게 전달하기 위한 방식 중 하나입니다. 토큰은 서버에서 생성되며, 페이로드에는 사용자의 정보와 토큰의 만료 시간 등이 포함됩니다. 만료 시간이 지난 토큰은 더 이상 유효하지 않기 때문에 보안에 결정적인 역할을 합니다.

Flask에서 JWT 토큰의 만료 시간을 설정하는 방법은 다음과 같습니다.

import datetime
from flask import Flask
from flask_jwt_extended import JWTManager, create_access_token

app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'your-secret-key'
jwt = JWTManager(app)

@app.route('/login', methods=['POST'])
def login():
    # 사용자 인증 로직
    # ...

    # 토큰 생성
    access_token = create_access_token(identity=user_id, expires_delta=datetime.timedelta(minutes=30))
    
    # 토큰 반환
    return {'access_token': access_token}

위 예제에서 create_access_token 함수의 expires_delta 매개변수를 사용하여 토큰의 만료 시간을 설정할 수 있습니다. datetime.timedelta를 사용하여 원하는 만료 시간을 지정할 수 있으며, 위의 예제에서는 30분으로 설정되어 있습니다.

로그 기록 정책 설정 방법

Flask는 logging 모듈을 사용하여 로그를 기록할 수 있습니다. 로그는 애플리케이션의 동작과 이벤트를 추적하고 디버깅에 유용한 정보를 제공합니다. Flask의 로깅 기능을 사용하여 각 요청 및 응답에 대한 로그를 기록하는 방법은 다음과 같습니다.

import logging
from flask import Flask

app = Flask(__name__)

# 로그 레벨 설정
app.logger.setLevel(logging.INFO)

@app.route('/')
def hello():
    app.logger.info('Hello World')  # 로그 메시지 출력
    return 'Hello World'

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

위 예제에서는 app.logger를 사용하여 로그 메시지를 기록하고 있습니다. app.logger는 Flask 애플리케이션의 로그 객체를 나타내며, setLevel 메서드를 사용하여 원하는 로그 레벨을 설정할 수 있습니다. 위의 예제에서는 INFO 레벨로 설정되어 있습니다.

Flask의 로깅 기능은 Flask-RESTful 또는 Flask-JWT-Extended와 같은 확장 모듈들과 함께 사용할 수 있으며, 필요한 로그 기록 정책을 설정하여 보다 상세하고 유연한 로깅을 구현할 수 있습니다.

#Flask #JWT