나는 1분 안에 모든 Next.js 앱에 프로덕션 레디 인증을 추가하는 CLI를 만들었습니다
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.ts— jose 로 JWT 서명 및 검증lib/hash.ts— bcrypt 헬퍼lib/session.ts— 쿠키 리더lib/dbConfig.ts— MongoDB 연결 싱글톤hooks/useAuth.tsx— 클라이언트‑사이드 인증 상태components/ToasterProvider.tsx— 토스트 알림proxy.ts— 미들웨어 라우트 보호
설계 결정
- httpOnly 쿠키에 JWT –
localStorage가 아님. httpOnly 쿠키는 JavaScript 로 접근할 수 없으므로 XSS 공격에 면역이 됩니다.localStorage에 토큰을 저장하는 것은 흔한 보안 실수입니다. - jose 를
jsonwebtoken대신 사용 – 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
- 같은 인증 코드를 한 번도 너무 많이 복사‑붙여넣기 하는 일.