Skip to main content

인증이란

인증(Authentication)이란 접근해 온 사용자가 “누구인지”를 확인하는 구조입니다. 웹 애플리케이션에서는 로그인 폼에서 이메일 주소와 비밀번호를 받아 올바르다면 세션에 사용자 정보를 저장합니다. 이후 요청에서는 그 세션을 참조해 사용자를 식별합니다. Laravel의 인증 기능은 “가드”와 “프로바이더”라는 두 가지 개념으로 구성되어 있습니다.
  • 가드: 각 요청에서 사용자를 어떻게 인증할지를 정의합니다. 기본값은 session 가드로, 세션과 쿠키를 사용해 상태를 관리합니다.
  • 프로바이더: 사용자를 데이터베이스에서 어떻게 가져올지를 정의합니다. 기본값은 Eloquent를 사용합니다.
인증 설정 파일은 config/auth.php입니다. 기본 설정 그대로 대부분의 웹 애플리케이션에 대응할 수 있습니다.

스타터 킷을 사용한 인증

Laravel에서는 laravel new로 애플리케이션을 생성할 때 스타터 킷을 선택하기만 하면 로그인·등록·비밀번호 재설정 같은 인증 기능이 자동으로 구축됩니다. 이것이 가장 권장되는 방법입니다.
1

애플리케이션을 생성한다

Laravel 인스톨러로 애플리케이션을 생성합니다. 중간에 스타터 킷을 선택하는 프롬프트가 표시됩니다.
스타터 킷으로 React, Vue, Livewire, Svelte 중에서 선택할 수 있습니다. 팀의 기술 스택에 맞춰 선택해 주세요.
2

프런트엔드 의존 관계를 설치한다

3

데이터베이스를 준비한다

.env 파일의 데이터베이스 설정을 확인한 후 마이그레이션을 실행합니다.
users 테이블을 포함하는 초기 마이그레이션이 적용됩니다.
4

개발 서버를 기동한다

브라우저에서 http://localhost:8000에 접속하면 내비게이션에 “Register”와 “Log in” 링크가 표시됩니다. /register에 접속해 사용자를 등록해 봅시다.
스타터 킷을 사용하면 다음 기능을 즉시 이용할 수 있습니다.
스타터 킷으로 생성된 코드(컨트롤러·라우트·뷰)는 모두 자신의 애플리케이션 내에 존재합니다. 자유롭게 수정하여 커스터마이징할 수 있습니다.

이용 가능한 스타터 킷

React

React 19·TypeScript·Tailwind·shadcn/ui를 사용한 모던한 SPA를 구축할 수 있습니다. Inertia를 사용해 서버사이드 라우팅을 유지하면서 React의 프런트엔드를 이용할 수 있습니다.

Vue

Vue Composition API·TypeScript·Tailwind·shadcn-vue를 채택하고 있습니다. React와 마찬가지로 Inertia를 사용해 서버사이드와 연동합니다.

Livewire

PHP만으로 동적인 UI를 구축할 수 있는 Livewire를 사용합니다. Blade 템플릿이 중심인 팀이나 JavaScript 프레임워크를 사용하지 않으려는 경우에 최적입니다. Flux UI 컴포넌트 라이브러리가 포함되어 있습니다.

Svelte

Svelte 5·TypeScript·Tailwind·shadcn-svelte를 사용합니다. Inertia와 조합해 모던한 SPA를 구축할 수 있습니다.

인증 파사드

Auth 파사드를 사용하면 현재 인증되어 있는 사용자의 정보를 가져오거나 인증 상태를 확인할 수 있습니다.

인증된 사용자 가져오기

컨트롤러에서는 Request 객체에서도 사용자를 가져올 수 있습니다.

인증 상태 확인

Auth::check()는 사용자가 로그인해 있는지를 true / false로 반환합니다.
Blade 템플릿에서는 @auth@guest 디렉티브를 사용하면 편리합니다.

라우트 보호

로그인된 사용자만 접근할 수 있는 라우트를 만들려면 auth 미들웨어를 사용합니다.
인증되지 않은 사용자가 접근하려고 하면 자동으로 /login으로 리다이렉트됩니다. 여러 라우트를 함께 보호하려면 그룹을 사용합니다.
auth 미들웨어를 붙이는 것을 잊으면 미로그인 사용자가 접근할 수 있게 됩니다. 보호가 필요한 라우트에는 반드시 적용해 주세요.

게스트 전용 라우트

로그인된 사용자를 리다이렉트하려면 guest 미들웨어를 사용합니다. 로그인 페이지나 등록 페이지에 적용함으로써 이미 로그인해 있는 사용자를 대시보드로 전송할 수 있습니다.

수동 인증

스타터 킷을 사용하지 않고 수동으로 로그인 처리를 구현하려면 Auth::attempt()를 사용합니다.
Auth::attempt()의 첫 번째 인수에 인증 정보 배열을 전달합니다. 비밀번호는 자동으로 해시와 비교되므로 평문 그대로 전달해 주세요. “로그인 상태 유지” 기능을 구현하려면 두 번째 인수에 true를 전달합니다.
수동 인증을 구현하는 경우에도 스타터 킷의 코드를 참고하는 것을 추천합니다. 안전한 구현의 모범으로 활용할 수 있습니다.

로그아웃

사용자를 로그아웃시키려면 Auth::logout()을 호출합니다. 세션의 무효화와 CSRF 토큰의 재생성도 함께 수행하는 것이 베스트 프랙티스입니다.
라우트에는 POST 메서드를 사용합니다.
Blade 템플릿에서는 폼을 사용해 POST 요청을 보냅니다.

정리

다음 단계

미들웨어

auth 미들웨어의 구조나 독자 미들웨어의 작성 방법을 자세히 배웁니다.
마지막 수정일 2026년 7월 13일