ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Laravel 認証システムの選択肢
| パッケージ | 特徴 | 適している案件 |
|---|---|---|
| Breeze | Blade + Tailwind の最小実装。ログイン/登録/PW リセット/メール認証 | 小〜中規模、シンプル要件 |
| Jetstream | 2FA / チーム / API トークン / プロフィール管理込み | SaaS 系 |
| Fortify | バックエンドのみ(ビュー無し) | SPA や独自 UI |
| laravel/ui | 旧 make:auth 後継、Bootstrap/Vue/React | Laravel 6/7 互換、レガシー |
| Sanctum | SPA / モバイル向け API 認証(セッション or トークン) | SPA / API |
| Passport | OAuth2 サーバ実装 | 外部公開 API |
① Breeze で 5 分で作る(最も推奨)
# 新規プロジェクトの場合
composer create-project laravel/laravel myapp
cd myapp
# Breeze 導入
composer require laravel/breeze --dev
php artisan breeze:install # 対話で stack 選択 (blade / livewire / react / vue)
# フロントエンド資産ビルド
npm install
npm run build
# DB マイグレーション
php artisan migrate
# 起動
php artisan serve
# → http://127.0.0.1:8000/login /register /forgot-password
Breeze で何が作られるか
routes/auth.php— 認証関連ルート(web.phpから require)app/Http/Controllers/Auth/— Login / Register / PasswordReset 等のコントローラapp/Http/Requests/Auth/LoginRequest.php— ログイン入力のバリデーションresources/views/auth/— login.blade.php, register.blade.php 等app/Providers/RouteServiceProvider.php—HOME定数(ログイン後リダイレクト先)
② Jetstream(フル機能)
composer require laravel/jetstream
php artisan jetstream:install livewire --teams
# または
php artisan jetstream:install inertia --teams
npm install && npm run build
php artisan migrate
追加で 2FA / チーム / Personal API Token / Profile 編集の画面が一通り入ります。要件が固まる前に入れると後で削るのが大変なので、必要が無ければ Breeze で十分です。
③ Fortify(ビュー無し)
composer require laravel/fortify
php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"
php artisan migrate
Fortify は POST /login や POST /register のエンドポイントだけ提供します。GET(画面表示)は自分で作ります。SPA から呼ぶ、または自前 Blade 画面と組み合わせる構成です。
認証の中身: config/auth.php
// config/auth.php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'sanctum',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
],
];
User モデルと auth ミドルウェア
// app/Models/User.php
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
protected $fillable = ['name', 'email', 'password'];
protected $hidden = ['password', 'remember_token'];
protected $casts = [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::middleware('auth')->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index']);
Route::get('/profile', [ProfileController::class, 'edit']);
});
Route::middleware('guest')->group(function () {
Route::get('/login', [LoginController::class, 'create']);
});
認証状態を扱う API
use Illuminate\Support\Facades\Auth;
// 現在ログイン中か
if (Auth::check()) { ... }
// ログイン中のユーザー
$user = Auth::user();
$id = Auth::id();
// 手動ログイン(メール + パスワード)
if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) {
request()->session()->regenerate();
return redirect()->intended('/dashboard');
}
// ログアウト
Auth::logout();
request()->session()->invalidate();
request()->session()->regenerateToken();
// 特定ユーザーを強制ログイン(管理用途)
Auth::loginUsingId(1);
Blade での出し分け
@auth
{{ Auth::user()->name }} さんでログイン中
@else
ログイン
@endauth
{{-- 役割で出し分け --}}
@can('manage-posts')
記事管理
@endcan
カスタムガード(管理者用認証など)
// config/auth.php に admin ガードを追加
'guards' => [
'web' => ['driver' => 'session', 'provider' => 'users'],
'admin' => ['driver' => 'session', 'provider' => 'admins'],
],
'providers' => [
'users' => ['driver' => 'eloquent', 'model' => App\Models\User::class],
'admins' => ['driver' => 'eloquent', 'model' => App\Models\Admin::class],
],
// ルート
Route::middleware('auth:admin')->prefix('admin')->group(function () {
Route::get('/dashboard', ...);
});
// 取得
$admin = Auth::guard('admin')->user();
FAQ
Q: php artisan make:auth が使えない
A: Laravel 6 以前のコマンド。今は composer require laravel/ui → php artisan ui:auth、または Breeze を使ってください。
Q: パスワードハッシュは何を使っている?
A: 標準で bcrypt(config/hashing.php で argon2id / argon2i に切替可)。Hash::make($pw) でハッシュ生成、Hash::check($pw, $hash) で検証。
Q: SPA で認証したい
A: Laravel Sanctum + Breeze(API モード)または Fortify。同一ドメインならセッションベース、サブドメイン違いならトークンベース。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- インストールと設定
- クイックスタート & チュートリアル(初心者向け)
- クイックスタート & チュートリアル(中級者向け)
- ルーティング
- Bladeテンプレート(ビュー/レイアウト)
- コントローラー
- マイグレーションとテーブル定義
- データベースの設定
- Eloquentモデル (ORM)
- SQLとクエリビルダー
- バリデーション
- .envファイルの設定値へのアクセス
- 動作環境による分岐処理
- configフォルダ配下の設定値へのアクセス
- assetヘルパーを利用したpublicフォルダへのアクセス
- storageフォルダへのアクセス
- アプリケーション名の変更
- メンテナンス
- ログイン画面(認証システム)の作成
- ログインの必須化
- ログインユーザー情報の取得
- ルートの認証化
- 本番サーバーへのデプロイ方法
- 多言語化
- csrf_field
- ファイルのダウンロード
- CSVのアップロードおよび読み込み(maatwebsite/excel)
- ページタイトルの設定
- コマンド一覧
- エラー一覧
- SQLの実行ログ出力方法
- キャッシュのクリア
- Selectの結果の最初もしくは最後に任意の値を追加する方法
- ajaxでPOST通信する際の注意点
- ソーシャルログインの実装
- セッション情報の確認
- ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
- redirectやreturn viewにメッセージを付与する方法
- クッキー(cookie)の設定と取得
- クラスの再読み込み
- csrfの有効時間を変更する方法
- ViewComposerを用いてviewに共通の値を付与する方法
- View::shareを用いて共通の値を各ビューに渡す方法
- ミドルウェアを用いた処理の共通化
- Middleware内でAuth::check()などを使用する方法
- Controller以外でリダイレクトする方法
- セッションの値の取得/保存/更新/削除
- $requestの値を変更する方法
- 常時SSL化
- ページング(ページネーション)をする方法
- vue.jsとの連携
- Vue.jsと連携するSPA実行環境構築
- .envの値をvue.jsで参照する方法
- vue.jsを本番環境にリリースする方法
- could not find driver(Windows, MySQL編)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?