現在アクセスしているユーザーが認証済みかどうか確認する


authentication

 悩み事

ユーザーがログインしているか確認したい

Laravelは自動的にSessionを利用して、認証ユーザーを維持しています
現在アクセスしているユーザーがSessionが有効状態かどうかを知りたい場合の確認方法です

 解決方法

Auth::check()を使いましょう

Auth::check()メソッドは、簡単にtruefalseを返却します

if (Auth::check()) {
    echo "ログイン済みのユーザー!";
}

 アドバイス

これらは通常、見えない所で実行します

Sessionに userのidが含まれる場合は、
データベースからユーザー情報を取得する為に、Laravelがチェックします

取得できなかった場合、Laravelはremember meCookieをチェックします
そして再び、それを利用してデータベースからの取得を試みます

データベースからユーザー情報が見つかった場合にのみ、trueが返却されます

シンプルで簡単に利用できますが、
デフォルトの状態でそのまま利用する場合は、
この処理が走るたびに都度データベースにアクセスする事を覚えておいて下さい
小さなシステムであれば、特に気にする必要はありませんが、
大規模なシステムではボツルネックになる場合もあり得ます

'guest'フィルターはこのメソッドを利用しています

Laravelはapp/filters.php内で、
guest フィルターはデフォルトで実装されています。

Route::filter('guest', function() {
    if (Auth::check()) {
        return Redirect::to('/');
    }
});

未ログインユーザーのみがアクセス可能であるルートにこのフィルターを指定した場合、
すでにログインしている場合は、/、つまりトップページにリダイレクトされる事になります


Author:Chuck Heintzelman

Editor and Translator:Yuuki Takezawa