この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:guest
更新日時:2026-06-11 07:07:02

タイトル: セッション情報の確認
SEOタイトル: Laravel セッション・ログインユーザ情報の確認方法|Auth::user / session() / dump

この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。

<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;background:#fffbea;border:1px solid #f4c430;margin:1em 0;width:100%"><tr><td style="background:#f4c430;color:#000;font-weight:bold;padding:8px">この記事の要点</td></tr><tr><td style="padding:10px"><ul><li>Laravel で<strong>ログイン後のセッション情報・ユーザ情報</strong>を確認する</li><li><strong>全情報</strong>: <code>Auth::user()</code> / <strong>ID のみ</strong>: <code>Auth::id()</code></li><li>セッション全件: <code>session()->all()</code> / 個別: <code>session("key")</code></li><li>デバッグ: <code>dd(session()->all())</code> / ログ出力: <code>Log::info(json_encode($user))</code></li><li>Blade テンプレート: <code>{{ auth()->user()->name }}</code> / <code>@auth ... @endauth</code></li></ul></td></tr></table>
<h2>ログインユーザの取得</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-php">use Illuminate\Support\Facades\Auth;

// User オブジェクト全体
$user = Auth::user();
// または
$user = auth()->user();

// ID のみ
$userId = Auth::id();

// ログイン中かどうか
if (Auth::check()) {
    // ログイン済み
}

// User オブジェクトの各属性
echo $user->id;
echo $user->name;
echo $user->email;
echo $user->created_at;</code></pre>
<h2>セッション情報の取得</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-php">// グローバルヘルパ session()
$value = session(&apos;key&apos;);
$value = session(&apos;key&apos;, &apos;default&apos;);  // デフォルト値

// 全件取得
$all = session()->all();

// 存在チェック
if (session()->has(&apos;key&apos;)) { ... }

// Request 経由でも取得可
public function show(Request $request) {
    $value = $request->session()->get(&apos;key&apos;);
}

// セッションに保存
session([&apos;foo&apos; => &apos;bar&apos;]);
session()->put(&apos;foo&apos;, &apos;bar&apos;);

// 削除
session()->forget(&apos;foo&apos;);
session()->flush();  // 全消去

// 一回限り(次のリクエストまで保持)
session()->flash(&apos;message&apos;, &apos;保存しました&apos;);</code></pre>
<h2>デバッグ表示</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-php">// 即時 dump して停止(dump + die)
dd(Auth::user());
dd(session()->all());

// dump して継続
dump(session()->all());

// var_dump 風
\Log::info(&apos;User info&apos;, [
    &apos;user&apos; => Auth::user(),
    &apos;session&apos; => session()->all(),
]);

// JSON でログ
\Log::debug(json_encode(Auth::user()->toArray(), JSON_UNESCAPED_UNICODE));</code></pre>
<h2>Blade テンプレートでの表示</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-blade">{{-- ログイン中だけ表示 --}}
@auth
    こんにちは、{{ auth()->user()->name }} さん
    <form method="POST" action="{{ route(&apos;logout&apos;) }}">
        @csrf
        <button>ログアウト</button>
    </form>
@endauth

{{-- 未ログイン時だけ表示 --}}
@guest
    <a href="{{ route(&apos;login&apos;) }}">ログイン</a>
@endguest

{{-- ロール別表示 --}}
@can(&apos;admin&apos;)
    管理者メニュー
@endcan

{{-- セッションフラッシュメッセージ --}}
@if(session()->has(&apos;message&apos;))
    <div class="alert">{{ session(&apos;message&apos;) }}</div>
@endif</code></pre>
<h2>セッションの保存先</h2>

<p>Laravel は <code>.env</code> の <code>SESSION_DRIVER</code> でセッションの保存先を切替:</p>

<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;width:100%">
<thead><tr style="background:#f3f4f6"><th>ドライバ</th><th>保存先</th><th>用途</th></tr></thead>
<tbody>
<tr><td><strong>file</strong> (デフォルト)</td><td><code>storage/framework/sessions/</code></td><td>単一サーバ・開発時</td></tr>
<tr><td><strong>cookie</strong></td><td>ブラウザ Cookie(暗号化)</td><td>サーバレス・軽量</td></tr>
<tr><td><strong>database</strong></td><td>sessions テーブル</td><td>複数サーバ環境</td></tr>
<tr><td><strong>redis</strong></td><td>Redis</td><td>高速・複数サーバ・大規模</td></tr>
<tr><td><strong>memcached</strong></td><td>Memcached</td><td>高速・分散</td></tr>
<tr><td><strong>array</strong></td><td>メモリ(リクエスト終了で消える)</td><td>テスト時のみ</td></tr>
</tbody>
</table>

<h2>セッション ID とライフタイム</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-php">// セッション ID
$id = session()->getId();

// セッション regenerate(ログイン時の典型)
session()->regenerate();

// 無効化
session()->invalidate();

// すべてクリア + 新規 ID
Auth::logout();
session()->invalidate();
session()->regenerateToken();

// config/session.php の lifetime(分)
// .env: SESSION_LIFETIME=120 で 2 時間</code></pre>
<h2>API トークン認証の場合</h2>

<p>API ルートはセッションを使わないため、Sanctum / Passport で発行したトークンが使われます:</p>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-php">// Sanctum で認証されたユーザ
Route::middleware(&apos;auth:sanctum&apos;)->get(&apos;/user&apos;, function (Request $request) {
    return $request->user();
});

// クライアント側
fetch(&apos;/api/user&apos;, {
    headers: {
        &apos;Authorization&apos;: &apos;Bearer &apos; + token
    }
});</code></pre>
<h2>Telescope でセッション確認(開発時)</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># Laravel Telescope を入れる
composer require laravel/telescope --dev
php artisan telescope:install
php artisan migrate

# /telescope にアクセスして
# Requests → 各リクエスト → Session タブで全情報を可視化</code></pre>
<h2>よくあるハマりどころ</h2>

<ul>
<li><strong>Auth::user() が null</strong>: ルートが auth ミドルウェアの内側にない / セッション切れ / Cookie ドメイン違い</li>
<li><strong>セッションが共有されない</strong>: 複数サーバ環境で file ドライバを使っている → database / redis に変更</li>
<li><strong>セッション CSRF</strong>: 「419 Page Expired」は CSRF トークン不一致 → @csrf or X-CSRF-TOKEN ヘッダ</li>
<li><strong>ログ出力でクラスシリアライズ失敗</strong>: 循環参照を避けるため <code>$user->toArray()</code> または select で必要列のみに</li>
<li><strong>session() ヘルパが nil</strong>: コンソールコマンド (php artisan tinker / scheduled job) ではセッション未使用</li>
</ul>