Skip to main content

검증이란

검증이란, 사용자로부터 송신된 데이터가 기대하는 형식이나 조건을 만족하고 있는지를 검증하는 것입니다. Laravel은 리퀘스트 오브젝트의 validate 메서드나 전용의 폼 리퀘스트 클래스를 사용한, 심플하고 강력한 검증 기능을 제공하고 있습니다.

컨트롤러에서의 검증

$request->validate()의 사용법

컨트롤러의 메서드 내에서 $request->validate()를 호출하는 것이, 가장 심플한 검증 방법입니다. 검증에 실패하면, Laravel은 사용자를 이전 화면으로 자동으로 리다이렉트하고, 에러 정보를 세션에 보존합니다. 라우트를 정의합니다.
컨트롤러를 작성합니다.
validate 메서드에는 필드명을 키, 규칙을 값으로 한 배열을 전달합니다. 규칙은 파이프 |로 구분하거나, 배열로 지정할 수 있습니다.

주요 검증 규칙

이용 가능한 모든 검증 규칙은 공식 문서에서 확인할 수 있습니다.

검증 완료 데이터의 이용

validate 메서드의 반환값은, 검증에 통과한 데이터만을 포함하는 배열입니다. 신뢰할 수 있는 데이터로서 안전하게 사용할 수 있습니다.

Blade 템플릿에서의 에러 표시

검증에 실패하면, Laravel은 $errors 변수를 모든 뷰에서 자동적으로 이용할 수 있도록 합니다. web 미들웨어 그룹에 포함되는 ShareErrorsFromSession 미들웨어가 이를 담당하고 있습니다.

모든 에러를 일람 표시

필드별로 에러를 표시

@error 디렉티브를 사용하면, 특정 필드의 에러를 인라인으로 표시할 수 있습니다.
old('필드명')을 사용하면, 검증 실패 후에도 사용자가 입력한 값을 폼에 재표시할 수 있습니다.

폼 리퀘스트

폼 리퀘스트란

검증 로직이 복잡해진 경우는, “폼 리퀘스트” 클래스에 잘라 내는 것이 효과적입니다. 폼 리퀘스트는 검증과 인가의 로직을 하나의 클래스에 정리한 커스텀 리퀘스트 클래스입니다.

폼 리퀘스트의 작성

make:request Artisan 명령으로 폼 리퀘스트 클래스를 생성합니다.
app/Http/Requests/StorePostRequest.php가 생성됩니다.

rules() 메서드

검증 규칙을 배열로 반환합니다. 컨트롤러의 validate 메서드에 전달하는 배열과 같은 형식입니다.

authorize() 메서드

이 리퀘스트를 실행할 권한이 있는지를 판정합니다. true를 반환하면 인가 OK, false를 반환하면 403 응답이 자동적으로 반환됩니다. 인증된 사용자만 허가하는 경우, auth()->check()로 확인할 수 있습니다. 튜토리얼에서는 true를 반환해 두면 문제없습니다.
authorize 메서드가 false를 반환하면, 컨트롤러의 메서드는 실행되지 않고, 403 Forbidden 응답이 반환됩니다.

컨트롤러에의 주입

폼 리퀘스트는 컨트롤러 메서드의 타입 힌트로서 지정하는 것만으로 사용할 수 있습니다. 컨트롤러가 호출되기 전에 검증이 실행되기 때문에, 메서드 내에 검증 코드를 작성할 필요는 없습니다.
$request->validated()로 검증 완료 데이터만을 취득할 수 있습니다.

실천 예: 투고 폼의 작성과 보존

폼의 표시부터 송신·검증·보존까지의 일련의 플로우입니다.
1

라우트의 정의

2

폼 리퀘스트의 작성

3

컨트롤러의 구현

4

Blade 템플릿의 작성

Blade 폼에는 반드시 @csrf 디렉티브를 포함해 주세요. CSRF 토큰이 없으면 Laravel은 419 에러를 반환합니다.

다음 단계

HTTP 리퀘스트

리퀘스트 오브젝트를 사용한 데이터 취득 방법을 되돌아봅니다.
마지막 수정일 2026년 7월 13일