인증이란
인증(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로 반환합니다.
@auth와 @guest 디렉티브를 사용하면 편리합니다.
라우트 보호
로그인된 사용자만 접근할 수 있는 라우트를 만들려면auth 미들웨어를 사용합니다.
/login으로 리다이렉트됩니다.
여러 라우트를 함께 보호하려면 그룹을 사용합니다.
게스트 전용 라우트
로그인된 사용자를 리다이렉트하려면guest 미들웨어를 사용합니다.
로그인 페이지나 등록 페이지에 적용함으로써 이미 로그인해 있는 사용자를 대시보드로 전송할 수 있습니다.
수동 인증
스타터 킷을 사용하지 않고 수동으로 로그인 처리를 구현하려면Auth::attempt()를 사용합니다.
Auth::attempt()의 첫 번째 인수에 인증 정보 배열을 전달합니다.
비밀번호는 자동으로 해시와 비교되므로 평문 그대로 전달해 주세요.
“로그인 상태 유지” 기능을 구현하려면 두 번째 인수에 true를 전달합니다.
수동 인증을 구현하는 경우에도 스타터 킷의 코드를 참고하는 것을 추천합니다. 안전한 구현의 모범으로 활용할 수 있습니다.
로그아웃
사용자를 로그아웃시키려면Auth::logout()을 호출합니다.
세션의 무효화와 CSRF 토큰의 재생성도 함께 수행하는 것이 베스트 프랙티스입니다.
정리
다음 단계
미들웨어
auth 미들웨어의 구조나 독자 미들웨어의 작성 방법을 자세히 배웁니다.