Skip to main content

소개

이메일 인증(Email Verification)은 사용자가 등록한 이메일 주소를 실제로 소유하고 있는지 확인하는 구조입니다. Laravel은 확인 메일 전송과 검증 처리를 기본으로 제공하므로, 최소한의 구현으로 안전한 인증 플로우를 구축할 수 있습니다.
스타터 킷을 사용하는 경우, 인증 화면과 이메일 인증 플로우가 이미 포함되어 있습니다. 수동으로 구현하는 경우에는 이 페이지의 절차에 따라 모델·라우트·뷰를 직접 정의해 주세요.

모델과 데이터베이스 준비

MustVerifyEmail 구현하기

App\Models\UserIlluminate\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와 조합해서 사용합니다.
미인증 사용자가 접근하면 Laravel은 자동으로 verification.notice로 리다이렉트합니다.

커스터마이징

확인 메일 본문을 커스터마이징하려면 AppServiceProviderboot 메서드에서 VerifyEmail::toMailUsing을 설정합니다.

이벤트

이메일 인증 시에는 Illuminate\Auth\Events\Verified 이벤트가 발생합니다. 스타터 킷에서는 자동으로 처리되지만, 수동 구현에서는 필요에 따라 이벤트 처리를 추가해 주세요.
마지막 수정일 2026년 7월 13일