Next.js + Prisma로 이메일 인증 기능 구현하는 법

세이박사
2,239
1 0

Next.js를 기반으로 회원가입 기능을 만들고 있다면, 단순한 계정 생성만으로는 부족합니다.
서비스의 신뢰도와 보안을 확보하려면 이메일 인증을 통한 계정 활성화 절차가 필요합니다.


이메일 인증은 아래와 같은 흐름으로 구성됩니다:

  1. 1. 사용자가 회원가입을 요청합니다.

  2. 2. 서버는 유저 정보를 저장하되 isVerified: false 상태로 생성하고,

  3. 3. 인증 토큰을 발급해 이메일로 전송합니다.

  4. 4. 사용자가 메일의 링크를 클릭하면 토큰이 검증되고, 계정이 활성화됩니다.


이제 이 기능을 GPT에게 다음처럼 요청하면, 설계와 구현을 한 번에 받을 수 있습니다.

프롬프트

복사
넌 인증/보안 기능에 숙련된 시니어 풀스택 개발자야. 나는 지금 Next.js 기반 회원가입 시스템에 "이메일 인증 기반 계정 활성화" 기능을 추가하려고 해. 아래 환경, 목표, 보안 기준에 맞게 전체 구조와 코드를 작성해줘.

[기술 스택 및 환경]
- 프레임워크: Next.js 13 이상 (App Router 구조)
- 언어: TypeScript
- ORM: Prisma
- 데이터베이스: PostgreSQL
- 메일 전송: nodemailer 또는 추천 SMTP 라이브러리
- 비밀번호 암호화: bcrypt

[기능 흐름 요약]
1. 사용자가 이메일/비밀번호로 회원가입 요청
2. 서버는 사용자 계정을 "inactive" 상태로 생성하고, 인증 토큰을 생성하여 저장
3. 해당 이메일로 인증 링크를 전송 (`https://example.com/verify?token=xxx`)
4. 사용자가 인증 링크 클릭 시 토큰 검증 → 성공 시 계정 활성화 (`active: true` 업데이트)
5. 인증 링크는 24시간 유효, 1회용이며 재사용 불가
6. 인증되지 않은 계정은 로그인 불가

[보안 및 예외 처리 기준]
- 인증 토큰은 단방향 해시로 저장 (DB에 평문 저장 금지)
- 만료된 토큰 또는 잘못된 토큰에 대한 명확한 예외 처리
- 인증 메일은 실제 서비스에 사용 가능한 형태로 템플릿 구성
- 인증 상태가 `false`인 계정은 로그인 시도 시 "이메일 인증 필요" 메시지 출력
- 인증 링크 클릭 시 UX 피드백 페이지 제공 (`성공/실패/만료 안내`)

[세부 구현 요청]
- Prisma에 `User` 모델 + `EmailVerificationToken` 모델 구성
- API 경로: `/api/auth/register`, `/api/auth/verify-email`
- 유틸 함수: 토큰 생성/검증, 이메일 발송 함수 분리
- 이메일 템플릿 구성 예시 포함
- 클라이언트 회원가입 form 예시 포함
- 모든 코드에 상세한 주석 포함
- 서버에서 쿠키 사용은 필요 없음

이 모든 조건을 반영해 다음을 포함한 전체 코드를 작성해줘:
1) Prisma 모델  
2) API route 파일  
3) 토큰/메일 관련 유틸 함수  
4) 회원가입 폼 컴포넌트  
5) 인증 결과 페이지 컴포넌트  
6) UX 흐름 설명
이 정도로 구체적인 프롬프트를 구성하면,
GPT가 단순 코드가 아니라 전체 인증 흐름을 설계 수준으로 제안해줍니다.
이메일 인증은 보안과 사용자 신뢰를 동시에 잡을 수 있는 기본 기능이므로,
서비스에 도입할 계획이라면 꼭 이 구조를 기반으로 구현해보세요.

댓글 작성

“모두 담지 마세요” — 분산투자의 진실

요즘 재테크에 관심 많으신가요? 많은 분이 한꺼번에 여러 자산에 투자하면 위험이 줄어든다고 믿지만, 실제로는 그 방식에도...

캔버스 위의 감정: 색채로 말하는 법

미술을 배우지만 기술적인 측면만 강조되고, 정작 감정을 표현하는 방법은 배우지 못했다고 느껴본 적 있으신가요? 한 미술 ...

프롬프트

ChatGPT

평범한 아이디어를 혁신으로 바꾸는 마법의 질문들!

ChatGPT

숨겨진 버그를 찾아내는 개발자의 비밀 무기!

ChatGPT

교실의 혁명: 모든 학생이 빛나는 순간을 만드는 법!

ChatGPT

“우리 고객, 대체 누구세요?”… 페르소나 설정으로 마케팅 길을 찾다!

ChatGPT

얽히고설킨 코드, 이제는 안녕! ‘리팩토링 마법’으로 되찾은 개발의 즐거움!

ChatGPT

악보 위에서 길을 잃었나요? 이젠 AI와 함께, 당신의 감성을 노래하세요!

ChatGPT

“그래서, 결론이 뭔데?”… 이젠 보고서 핵심만 콕콕, 칭찬이 쏟아져요!

ChatGPT

ai튜터로 이젠 프리토킹도 자신 있어요!

ChatGPT

그 많던 ‘깜깜이 투자’, 이젠 안녕! 데이터로 검증하니 길이 보이네?

ChatGPT

“이거 또 안 돼요!”… 명쾌한 버그 리포트 한 장이 가져온 놀라운 변화!

ChatGPT

연 복리 3% 추가 수익 달성의 기록

ChatGPT

기억의 궁전

ChatGPT

미완성 소설이 베스트셀러로: 영감의 블록을 깨는 마법의 질문들

ChatGPT

협업의 끝판왕: 소통 장벽을 무너뜨리는 3단계 전략!

ChatGPT

?! 당신의 머릿속 아이디어를 폭발시키는 비밀 공식 ?!

ChatGPT

스케치북에 스며든, 마법 같은 색채의 비밀