タイトル: ログインユーザー情報の取得
| この記事の要点 |
|---|
|
本稿はLaravelの認証情報(ログインユーザー情報)の取得について説明します。Auth ファサード/auth() ヘルパー/$request->user() の3通りがあり、用途で使い分けます。
基本:Auth::user() で取得
もっとも一般的な書き方です。
|
$user = \Auth::user(); |
未ログイン時は null が返るため、必要に応じてnullチェックを入れます。
IDだけ欲しいとき
カラム取得が不要な場合は id() を使う方が軽量です。
|
$userId = \Auth::id(); |
ログイン中かどうか判定したいとき
|
if (\Auth::check()) { |
auth() ヘルパー
関数ヘルパーを使うと記述が短くなります。Bladeテンプレートでも使えます。
|
$user = auth()->user(); |
コントローラーで Request 経由で取得
コントローラーのアクションメソッド内では $request->user() が使えます。テスト時にユーザーを差し替えやすく、推奨される書き方の一つです。
|
public function show(Request $request) |
Bladeテンプレート内で参照
|
@auth |
ガード(複数認証)を指定したいとき
管理者用ガードを別に定義している場合などは、ガード名を指定して取得します。
|
$admin = \Auth::guard('admin')->user(); |
取得方法の使い分け
| 書き方 | 主な利用シーン |
|---|---|
\Auth::user() | どこからでも使える汎用 |
\Auth::id() / auth()->id() | IDだけ欲しいとき |
\Auth::check() / auth()->check() | ログイン状態の判定 |
auth() ヘルパー | Blade含めて短く書きたいとき |
$request->user() | コントローラー内、テストでユーザー差し替え可 |
\Auth::guard('name')->user() | 複数ガードを使い分けるとき |
注意点
- 未ログイン時はすべて
nullもしくはfalseを返す。$user->nameのように直接プロパティを参照する前にチェック - APIトークン認証 (Sanctum/Passport) でも同じ書き方で取得可能(ガードが
apiになる) - セッションが切れたユーザーをアクションでブロックしたい場合は
authミドルウェアを使う