미들웨어란
미들웨어는 애플리케이션에 도달하는 HTTP 요청을 검사·필터링하는 구조입니다. 요청이 컨트롤러에 전달되기 전후에 처리를 끼워 넣을 수 있습니다. 예를 들어 Laravel에는 인증 미들웨어가 포함되어 있습니다. 사용자가 인증되지 않은 경우에는 로그인 화면으로 리다이렉트하고, 인증된 경우에는 요청을 그대로 애플리케이션 내부로 통과시킵니다. 인증 외에도 로그 기록·CSRF 보호·레이트 제한 등 다양한 목적으로 미들웨어를 만들 수 있습니다. Laravel 13의 CSRF 보호 상세는 CSRF 보호를 참조해 주세요.사용자가 정의한 미들웨어는 일반적으로
app/Http/Middleware 디렉터리에 배치합니다.내장 미들웨어
Laravel은 기본적으로web과 api 두 개의 미들웨어 그룹을 준비하고 있습니다.
routes/web.php에는 web 그룹이, routes/api.php에는 api 그룹이 자동으로 적용됩니다.
또한 자주 사용되는 미들웨어에는 별칭이 설정되어 있어 짧은 이름으로 참조할 수 있습니다.
미들웨어 생성
make:middleware Artisan 명령으로 새 미들웨어를 만듭니다.
app/Http/Middleware/EnsureTokenIsValid.php가 생성됩니다.
handle 메서드에 요청을 처리하는 로직을 작성합니다.
$next($request)를 호출하면 요청이 애플리케이션의 다음 처리로 전달됩니다.
조건을 충족하지 않는 경우에는 리다이렉트나 응답을 반환해 요청을 멈춥니다.
요청 전후의 처리
미들웨어는 요청 전 또는 후에 처리를 실행할 수 있습니다.미들웨어 등록
글로벌 미들웨어
모든 요청에 대해 미들웨어를 실행하고 싶은 경우,bootstrap/app.php의 withMiddleware로 글로벌 스택에 추가합니다.
append는 스택의 끝에 추가합니다. 앞에 추가하려면 prepend를 사용합니다.
라우트로의 미들웨어 적용
특정 라우트에만 미들웨어를 적용하려면 라우트 정의에서middleware 메서드를 호출합니다.
withoutMiddleware를 사용합니다.
미들웨어 별칭
긴 클래스명에 짧은 별칭을 정의할 수 있습니다.bootstrap/app.php에서 설정합니다.
미들웨어 그룹
여러 미들웨어를 하나의 키로 묶으면 라우트로의 적용이 간단해집니다.bootstrap/app.php에서 appendToGroup 또는 prependToGroup을 사용합니다.
web 그룹이나 api 그룹에 미들웨어를 추가하는 경우에는 전용 메서드를 사용할 수 있습니다.
미들웨어 파라미터
미들웨어는 추가 파라미터를 받을 수 있습니다.handle 메서드의 $next 인수 뒤에 파라미터를 추가합니다.
:로 구분해 지정합니다.
실전 예시: 인증 체크 미들웨어
로그인하지 않은 사용자를 리다이렉트하는 단순한 예시입니다.다음 단계
HTTP 요청
컨트롤러에서 요청 데이터를 받는 방법을 배웁니다.