Flask Academy · 강의

jwt_required로 엔드포인트 보호하기

각 API 호출에서 토큰을 검증합니다.

레슨 3/413개 단계

jwt_required로 엔드포인트 보호하기은(는) CoddyKit의 무료 Flask Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Flask Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Flask Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

경로 보호하기

일부 경로에서 토큰을 요구해야 토큰이 유용합니다. jwt_required 데코레이터를 사용하면 모든 보기를 회원 전용 엔드포인트로 만들 수 있습니다. 🔒

데코레이터 적용하기

경로 아래에 @jwt_required()를 배치합니다. 이제 유효하고 만료되지 않은 토큰이 도착할 때만 보기가 실행됩니다.

@app.get("/profile")
@jwt_required()
def profile():
    ...

토큰이 들어가는 위치

클라이언트는 Bearer 방식을 사용해 Authorization 헤더에 토큰을 담아 보냅니다. Flask-JWT-Extended가 이 위치에서 자동으로 읽습니다.

Authorization: Bearer <your-token>

자동 거부

토큰이 없거나 잘못되었나요? 데코레이터가 코드가 실행되기 전에 요청을 중단하고 401을 반환합니다. 직접 확인 로직을 작성할 필요가 없습니다.

누가 호출했을까요

보호된 보기 안에서 get_jwt_identity를 호출하면 로그인할 때 서명한 식별자, 일반적으로 사용자 ID를 읽을 수 있습니다.

from flask_jwt_extended import get_jwt_identity
uid = get_jwt_identity()

전체 클레임 읽기

역할과 같은 추가 클레임이 필요한가요? get_jwt는 전체 페이로드를 사전으로 반환하므로 내부 값에 따라 분기할 수 있습니다.

from flask_jwt_extended import get_jwt
role = get_jwt().get("role")

식별자 사용하기

사용자 ID를 확인했으면 해당 사용자를 불러와 데이터를 제공합니다. 토큰이 누구인지 알려 주었으므로 나머지는 일반적인 Flask 작업입니다. 🙂

user = User.query.get(get_jwt_identity())

선택적 보호

로그인 여부에 따라 다르게 동작하는 페이지가 필요한가요? optional=True를 사용하면 어느 경우든 보기가 실행됩니다.

@jwt_required(optional=True)

오류 사용자 지정하기

unauthorized_loader를 등록하면 토큰이 없을 때 기본 응답 대신 친절한 JSON 메시지를 반환할 수 있습니다.

@jwt.unauthorized_loader
def missing(reason):
    return {"msg": reason}, 401

만료된 토큰

만료된 토큰도 데코레이터에 의해 거부됩니다. 계속하려면 클라이언트가 다시 로그인하거나 갱신해야 하므로, 탈취된 토큰의 유효 기간을 짧게 유지할 수 있습니다.

본문을 절대 신뢰하지 마세요

요청 본문의 사용자 ID가 아니라 토큰에서 호출자를 읽으세요. 서명이 있어야 ID를 신뢰할 수 있습니다.

빠른 확인

보호된 뷰가 누가 호출했는지 어떻게 알아내는지 떠올려 보세요.

복습

경로를 보호하려면 @jwt_required()를 추가하고, Bearer 헤더로 토큰을 보내며, get_jwt_identity로 호출자를 읽으세요. 🔐

무료로 시작

AI 튜터와 함께 Python을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
30
레슨
120

자주 묻는 질문

“jwt_required로 엔드포인트 보호하기” 강의는 무료인가요?

네 — “jwt_required로 엔드포인트 보호하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Flask Academy 강의 전체를 잠금 해제할 수 있습니다. Flask Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“jwt_required로 엔드포인트 보호하기”에서 뭘 배우나요?

각 API 호출에서 토큰을 검증합니다. 브라우저에서 직접 실행하는 실습 코드로 Flask Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Flask Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Flask Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“jwt_required로 엔드포인트 보호하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Flask Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Flask Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 세션과 무상태 토큰 비교
  2. 로그인 시 액세스 토큰 발급하기
  3. jwt_required로 엔드포인트 보호하기
  4. 갱신 토큰과 만료
← Flask Academy(으)로 돌아가기