laravel

Laravel8でコントローラーでログイン済みか判断する方法【$this->middleware】

2021年8月10日

インスタグラムのログイン画面

 

あなた
laravelでコントローラーでログイン済みか判断するにはどうしたらいいでしょうか?

 

laravelでwebアプリを開発している際には、「ログインしている場合に走らせたいメソッド」などがあると思います。

今回はコントローラー側で、ログイン判定をする方法を紹介していきます。

 

【前提】

・laravel8.X

 

Laravel8でコントローラーでログイン済みか判断する方法

 

結論から話すと、コントローラーの最初に以下の記述をすればOKです。

 

public function __construct()
    {
        $this->middleware('aut');
    }

 

もしも、認証パターンが「ユーザー」や「管理者」など複数の場合は、それに応じてauthを設定してあげればOKです。

公式ドキュメントにも書いてあります。

例は以下の通りです。

 

public function __construct()
    {
        $this->middleware('auth:users'); //ユーザーとしてログイン済みかどうか
    }

 

ちなみに、複数の認証パターンがあるかは「config/auth.php」で確認できます。

 

routeで認証をかける方法もある

 

コントローラーでなくても、ルーティングファイルで認証をかけてしまう方法もあります。

 

以下のような感じです。

Route::get('/dashboard', function () {
    return view('user.dashboard');
})->middleware(['auth:users'])->name('dashboard');

 

ここでは「->middleware(['auth:users'])」で「ユーザーとしてログイン済かどうか」を判定しています。

別に、ルーティングファイルでも、コントローラーファイルでもいいので、どちらかに認証ミドルウェアの読み込みはしておきましょう。

 

認証の処理はapp/Http/Middleware/Authenticate.phpに書いてあります

 

ちなみになのですが、認証系の処理は「app/Http/Middleware/Authenticate.php」に書いてあります。

デフォルトではログインページに飛ぶようになってますね。

 

ということで、まとめです。

 

・ログイン済みか判断するには「->middleware('auth')」を使う

・コントローラーかルーティング、もしくはその両方に記載

・認証系の処理はAuthenticate.phpに書いてある

 

今回は以上です。

ありがとうございました。

 

-laravel

© 2021 エンジニアてんし君ブログ