36.

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

編集
この記事の要点
  • Laravel でログイン後のセッション情報・ユーザ情報を確認する
  • 全情報: Auth::user() / ID のみ: Auth::id()
  • セッション全件: session()->all() / 個別: session("key")
  • デバッグ: dd(session()->all()) / ログ出力: Log::info(json_encode($user))
  • Blade テンプレート: {{ auth()->user()->name }} / @auth ... @endauth

ログインユーザの取得

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;

セッション情報の取得

// グローバルヘルパ session()
$value = session('key');
$value = session('key', 'default');  // デフォルト値

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

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

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

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

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

// 一回限り(次のリクエストまで保持)
session()->flash('message', '保存しました');

デバッグ表示

// 即時 dump して停止(dump + die)
dd(Auth::user());
dd(session()->all());

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

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

// JSON でログ
\Log::debug(json_encode(Auth::user()->toArray(), JSON_UNESCAPED_UNICODE));

Blade テンプレートでの表示

{{-- ログイン中だけ表示 --}}
@auth
    こんにちは、{{ auth()->user()->name }} さん
    
@csrf
@endauth {{-- 未ログイン時だけ表示 --}} @guest ログイン @endguest {{-- ロール別表示 --}} @can('admin') 管理者メニュー @endcan {{-- セッションフラッシュメッセージ --}} @if(session()->has('message'))
{{ session('message') }}
@endif

セッションの保存先

Laravel は .envSESSION_DRIVER でセッションの保存先を切替:

ドライバ保存先用途
file (デフォルト)storage/framework/sessions/単一サーバ・開発時
cookieブラウザ Cookie(暗号化)サーバレス・軽量
databasesessions テーブル複数サーバ環境
redisRedis高速・複数サーバ・大規模
memcachedMemcached高速・分散
arrayメモリ(リクエスト終了で消える)テスト時のみ

セッション ID とライフタイム

// セッション 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 時間

API トークン認証の場合

API ルートはセッションを使わないため、Sanctum / Passport で発行したトークンが使われます:

// Sanctum で認証されたユーザ
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

// クライアント側
fetch('/api/user', {
    headers: {
        'Authorization': 'Bearer ' + token
    }
});

Telescope でセッション確認(開発時)

# Laravel Telescope を入れる
composer require laravel/telescope --dev
php artisan telescope:install
php artisan migrate

# /telescope にアクセスして
# Requests → 各リクエスト → Session タブで全情報を可視化

よくあるハマりどころ

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

子ページはありません

同階層のページ
  1. インストールと設定
  2. クイックスタート & チュートリアル(初心者向け)
  3. クイックスタート & チュートリアル(中級者向け)
  4. ルーティング
  5. Bladeテンプレート(ビュー/レイアウト)
  6. コントローラー
  7. マイグレーションとテーブル定義
  8. データベースの設定
  9. Eloquentモデル (ORM)
  10. SQLとクエリビルダー
  11. バリデーション
  12. .envファイルの設定値へのアクセス
  13. 動作環境による分岐処理
  14. configフォルダ配下の設定値へのアクセス
  15. assetヘルパーを利用したpublicフォルダへのアクセス
  16. storageフォルダへのアクセス
  17. アプリケーション名の変更
  18. メンテナンス
  19. ログイン画面(認証システム)の作成
  20. ログインの必須化
  21. ログインユーザー情報の取得
  22. ルートの認証化
  23. 本番サーバーへのデプロイ方法
  24. 多言語化
  25. csrf_field
  26. ファイルのダウンロード
  27. CSVのアップロードおよび読み込み(maatwebsite/excel)
  28. ページタイトルの設定
  29. コマンド一覧
  30. エラー一覧
  31. SQLの実行ログ出力方法
  32. キャッシュのクリア
  33. Selectの結果の最初もしくは最後に任意の値を追加する方法
  34. ajaxでPOST通信する際の注意点
  35. ソーシャルログインの実装
  36. セッション情報の確認
  37. ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
  38. redirectやreturn viewにメッセージを付与する方法
  39. クッキー(cookie)の設定と取得
  40. クラスの再読み込み
  41. csrfの有効時間を変更する方法
  42. ViewComposerを用いてviewに共通の値を付与する方法
  43. View::shareを用いて共通の値を各ビューに渡す方法
  44. ミドルウェアを用いた処理の共通化
  45. Middleware内でAuth::check()などを使用する方法
  46. Controller以外でリダイレクトする方法
  47. セッションの値の取得/保存/更新/削除
  48. $requestの値を変更する方法
  49. 常時SSL化
  50. ページング(ページネーション)をする方法
  51. vue.jsとの連携
  52. Vue.jsと連携するSPA実行環境構築
  53. .envの値をvue.jsで参照する方法
  54. vue.jsを本番環境にリリースする方法
  55. could not find driver(Windows, MySQL編)