クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
PHP

Laravel5.4のコントローラコンストラクタでAuth::user()が取得できない

Laravel5.4 で認証を通したアクセスに対して、コントローラのコンストラクタでユーザモデルの値を取得しようと思ったら、なぜか Auth::user() の値が取得できなくて悩みました。

public function __construct()
{
    // 認証情報を取得
    $user = \Auth::user();

    // nullになる
    \Log::debug($user);  
}

auth の middleware は通過して認証は OK になっていて、コントローラのコンストラクタ以外のメソッドでは問題なく取得できます。

そんな時、こんな情報に行き当たりました。

Laravel 5.3 コントローラのコンストラクタの重要な変更

まさに同様の考え方で、認証が必要なコントローラでは、各コントローラまたは継承している親のコントローラのコンストラクタで、認証情報を使った共通の処理を書きたくなるケースがあるのですよね。

結論としては、コンストラクタで以下のように書けば使えるようになりますが、あくまでもこの中だけでしか参照できないので注意です。

public function __construct()
{
    $this->middleware(function ($request, $next) {
        // 認証情報を取得
        $user = Auth::user();
    
        // ex) ユーザーの認証情報を使った親クラスの処理を呼び出す
        $this->hogehoge($user);

        return $next($request);
    });
}
Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/09/21 11:58:20時点 Amazon調べ-詳細)

あなたにオススメ