소개
이메일 인증(Email Verification)은 사용자가 등록한 이메일 주소를 실제로 소유하고 있는지 확인하는 구조입니다. Laravel은 확인 메일 전송과 검증 처리를 기본으로 제공하므로, 최소한의 구현으로 안전한 인증 플로우를 구축할 수 있습니다.스타터 킷을 사용하는 경우, 인증 화면과 이메일 인증 플로우가 이미 포함되어 있습니다. 수동으로 구현하는 경우에는 이 페이지의 절차에 따라 모델·라우트·뷰를 직접 정의해 주세요.
모델과 데이터베이스 준비
MustVerifyEmail 구현하기
App\Models\User가 Illuminate\Contracts\Auth\MustVerifyEmail을 구현하고 있는지 확인해 주세요.
Registered 이벤트를 발생시켜 주세요.
email_verified_at 컬럼 확인하기
users 테이블에 email_verified_at 컬럼이 필요합니다. 일반적으로 기본 0001_01_01_000000_create_users_table.php에 포함되어 있습니다.
라우팅(3개의 라우트)
이메일 인증에서는verification.notice, verification.verify, verification.send 세 개의 라우트를 정의합니다.
1
인증 통지 표시 라우트(verification.notice)를 정의한다
미인증 사용자에게 “메일을 확인해 주세요”라고 표시하는 화면을 반환합니다.
2
인증 핸들러 라우트(verification.verify)를 정의한다
메일 내 링크를 클릭했을 때 서명된 URL을 검증하여 인증을 완료합니다.
3
재전송 라우트(verification.send)를 정의한다
사용자가 확인 메일을 분실했을 때 다시 전송합니다.
라우트 보호
인증된 사용자에게만 접근을 허용하려면verified 미들웨어를 사용합니다. 일반적으로 auth와 조합해서 사용합니다.
verification.notice로 리다이렉트합니다.
커스터마이징
확인 메일 본문을 커스터마이징하려면AppServiceProvider의 boot 메서드에서 VerifyEmail::toMailUsing을 설정합니다.
이벤트
이메일 인증 시에는Illuminate\Auth\Events\Verified 이벤트가 발생합니다. 스타터 킷에서는 자동으로 처리되지만, 수동 구현에서는 필요에 따라 이벤트 처리를 추가해 주세요.