나는 1분 안에 모든 Next.js 앱에 프로덕션 레디 인증을 추가하는 CLI를 만들었습니다

발행: (2026년 2월 25일 오후 01:59 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

소개

새로운 Next.js 프로젝트를 시작할 때마다 같은 인증 코드를 반복해서 작성하게 됩니다: JWT 설정, bcrypt 해싱, httpOnly 쿠키, Mongoose 모델, 미들웨어 보호, 로그인 및 회원가입 페이지 등. 올바르게 구현하는 데 몇 시간이 걸리며 매번 똑같습니다.

그래서 nextauthforge 를 만들었습니다 — CLI 하나로 어떤 Next.js App Router 프로젝트에도 1분 이내에 완전한 인증 시스템을 스캐폴딩해 줍니다.

시작하기

npx nextauthforge init

몇 가지 질문에 답하면 끝납니다.

? What is your project name? my-app
? Which database are you using? MongoDB
? Include login & signup pages? Yes
? Include example dashboard? Yes

✓ Auth files scaffolded
✓ Dependencies installed
✓ AuthForge setup complete!

스캐폴딩된 파일

API 라우트

  • POST /api/auth/signup — 회원가입 + 자동 로그인
  • POST /api/auth/login — 자격 증명 검증 + 쿠키 설정
  • POST /api/auth/logout — 세션 삭제
  • GET /api/auth/me — 현재 사용자 조회

프론트엔드 페이지

  • 랜딩 페이지
  • 로그인 페이지
  • 회원가입 페이지
  • 대시보드 (보호됨)

유틸리티

  • lib/jwt.tsjose 로 JWT 서명 및 검증
  • lib/hash.ts — bcrypt 헬퍼
  • lib/session.ts — 쿠키 리더
  • lib/dbConfig.ts — MongoDB 연결 싱글톤
  • hooks/useAuth.tsx — 클라이언트‑사이드 인증 상태
  • components/ToasterProvider.tsx — 토스트 알림
  • proxy.ts — 미들웨어 라우트 보호

설계 결정

  • httpOnly 쿠키에 JWTlocalStorage 가 아님. httpOnly 쿠키는 JavaScript 로 접근할 수 없으므로 XSS 공격에 면역이 됩니다. localStorage 에 토큰을 저장하는 것은 흔한 보안 실수입니다.
  • josejsonwebtoken 대신 사용 – Next.js 미들웨어는 Edge Runtime에서 실행되며 Node.js 내장 모듈이 없습니다. jsonwebtoken 은 미들웨어에서 동작하지 않지만 jose 는 Web Crypto API와 호환되어 Next.js 어디서든 작동합니다.
  • 12 라운드 bcrypt – 의도적으로 느리게 하여 무차별 대입 공격을 실용적이지 않게 만듭니다.
  • 일반적인 오류 메시지 – “사용자를 찾을 수 없음”과 “잘못된 비밀번호” 모두 동일한 “Invalid credentials” 메시지를 반환해 이메일 열거 공격을 방지합니다.

로드맵 (v1.0)

  • PostgreSQL + Prisma 지원
  • 리프레시 토큰
  • Google OAuth (npx nextauthforge add google)
  • GitHub OAuth
  • 이메일 인증 흐름

설치 및 링크

  • npm:
  • GitHub:

피드백 및 기여

커뮤니티의 피드백을 환영합니다. 문제가 발생하거나 기능 요청이 있으면 GitHub에 이슈를 열어 주세요.

기술 스택

  • Next.js 14+
  • MongoDB
  • jose
  • bcryptjs
  • 같은 인증 코드를 한 번도 너무 많이 복사‑붙여넣기 하는 일.
0 조회
Back to Blog

관련 글

더 보기 »

Stripe + Next.js 궁극 가이드 (2026년판)

1. 2026 라이프사이클: Embedded vs. Hosted Stripe는 이제 Embedded Checkout을 강력히 추진합니다. 기존 리디렉션과 달리, iframe이나 웹 컴포넌트를 사용하여…

FSCSS 변수 대체 연산자 (||)

FSCSS Variable Fallback Operator의 커버 이미지 ||https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fd...

Fedora / Red Hat에 Kiro 설치

개요 이 가이드가 수행하는 작업 - 공식 다운로드 서버에서 Kiro IDE 데스크톱 앱을 설치합니다. - 데스크톱 엔트리를 설정하여 Kiro를 실행할 수 있도록 합니다…