인증 미들웨어

Bearer 토큰 검증

보호된 리소스 접근 제어

function authMiddleware(req) {
  const url = new URL(req.url);

  // 공개 경로
  const publicPaths = ["/login", "/register", "/"];
  if (publicPaths.some(path => url.pathname === path)) {
    return { authenticated: true };
  }

  // Authorization 헤더 확인
  const authHeader = req.headers.get("Authorization");
  if (!authHeader) {
    return {
      authenticated: false,
      error: new Response("Unauthorized", { status: 401 })
    };
  }

  // 토큰 검증
  const token = authHeader.replace("Bearer ", "");
  if (token === "valid-token-123") {
    return { authenticated: true, user: { id: 1, name: "User" } };
  }

  return { authenticated: false, error: new Response("Invalid token", { status: 401 }) };
}

사용 예시

const server = Bun.serve({
  port: 3000,
  fetch(req) {
    const auth = authMiddleware(req);
    if (!auth.authenticated) return auth.error;

    return new Response("Protected content");
  }
});