Skip to main content

認証とは

認証(Authentication)とは、アクセスしてきたユーザーが「誰であるか」を確認する仕組みです。 Webアプリケーションでは、ログインフォームでメールアドレスとパスワードを受け取り、正しければセッションにユーザー情報を保存します。 以降のリクエストではそのセッションを参照してユーザーを識別します。 Laravelの認証機能は「ガード」と「プロバイダー」という2つの概念で構成されています。
  • ガード: 各リクエストでユーザーをどう認証するかを定義します。デフォルトは session ガードで、セッションとCookieを使って状態を管理します。
  • プロバイダー: ユーザーをデータベースからどう取得するかを定義します。デフォルトはEloquentを使います。
認証の設定ファイルは config/auth.php です。デフォルト設定のままほとんどのWebアプリケーションに対応できます。

スターターキットによる認証

Laravelでは、laravel new でアプリケーションを作成するときにスターターキットを選ぶだけで、ログイン・登録・パスワードリセットなどの認証機能が自動的に構築されます。これが最も推奨される方法です。
1

アプリケーションを作成する

Laravelインストーラーでアプリケーションを作成します。途中でスターターキットを選択するプロンプトが表示されます。
スターターキットとして ReactVueLivewireSvelte から選択できます。 チームの技術スタックに合わせて選んでください。
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() の第1引数に認証情報の配列を渡します。 パスワードは自動的にハッシュと比較されるので、平文のまま渡してください。 「ログイン状態を保持する」機能を実装するには、第2引数に true を渡します。
手動認証を実装する場合も、スターターキットのコードを参考にするのがおすすめです。安全な実装のお手本として活用できます。

ログアウト

ユーザーをログアウトさせるには Auth::logout() を呼び出します。 セッションの無効化とCSRFトークンの再生成も合わせて行うのがベストプラクティスです。
ルートにはPOSTメソッドを使います。
Bladeテンプレートではフォームを使ってPOSTリクエストを送ります。

まとめ

次のステップ

ミドルウェア

auth ミドルウェアの仕組みや独自ミドルウェアの作り方を詳しく学びます。
最終更新日 2026年4月5日