엔드포인트

JWT 의존성 함수

사용자가 유저인 API 에 모두 적용( jwt 검증)

기존 엑세스토큰 검증후 만요되었으면

401, message=”만료됨” 리턴

Refresh Token 삭제 (로그아웃 시)

사용자가 유저인 API 에 모두 적용( jwt 검증)

async def delete_refresh_token(request: Request, db):
    token = request.cookies.get("refresh_token")
    if not token:
        return

    try:
        payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
        jti = payload.get("jti")
        if jti:
            await db.refresh_tokens.delete_one({"jti": jti})
    except JWTError:
        pass  # 디코딩 실패 시 무시

리프레시 토큰 저장

{
  "jti": "uuid-refresh-123",
  "expires_at": ISODate("2025-10-06T17:12:00Z")
}

리프레시토큰 반환 함수

리프레시토큰은 이런식으로 엑세스토큰이랑 함께

from fastapi.responses import Response

def set_refresh_cookie(response: Response, token: str):
    response.set_cookie(
        key="refresh_token",
        value=token,
        httponly=True,
        secure=True,
        samesite="Strict",
        max_age=86400  # 1일
    )

🧠 이거 왜써요?