api Router를 통한 JWT Token 복호화

Park Bumsoo·2025년 3월 21일
0

Next.js14 AppRouter

목록 보기
9/10

설명은 추후 작성

cookie가 header에 들어있을 경우이며
body를 통해 전송하거나
GET을 전송할 경우에는 다른 로직 작성이 필요

route.ts

import { NextResponse } from "next/server";
import jwt from "jsonwebtoken";

export async function POST(req: Request) {
  try {
    // 헤더에서 cookie 값 가져오기
    const cookieHeader = req.headers.get("cookie");

    if (!cookieHeader) {
      return NextResponse.json({ error: "Cookie not found" }, { status: 401 });
    }

    // cookie에서 accessToken 추출
    const token = cookieHeader
      .split("; ")
      .find((cookie) => cookie.startsWith("accessToken="))
      ?.split("=")[1];

    if (!token) {
      return NextResponse.json(
        { error: "accessToken not found" },
        { status: 401 }
      );
    }

    // JWT 복호화 및 검증
    const decoded = jwt.verify(token, process.env.JWT_SECRET as string);

    return NextResponse.json({ data: decoded });
  } catch (error) {
    console.error("Error in POST handler:", error);

    // 에러 발생 시에도 반드시 응답 반환
    return NextResponse.json(
      { error: "Something went wrong" },
      { status: 500 }
    );
  }
}
profile
프론트엔드 개발자 ( React, Next.js ) - 업데이트 중입니다.

0개의 댓글