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で認証をかける方法もある
コントローラーでなくても、ルーティングファイルで認証をかけてしまう方法もあります。
以下のような感じです。
routes/web.phpRoute::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に書いてある
今回は以上です。
ありがとうございました。