[PHP] Laravel でユーザー認証されている時のユーザー情報の値のとり方や、判定する関数など
Laravel 標準のユーザー認証機能でログインされている時に、どうやってユーザー情報をとるかや、ログイン時の条件分岐の仕方などをまとめました。動作を確認している Laravel のバージョンは 5.7 です。
<目次>
ログインしていない場合はログインページへ移動させる
ログインしているユーザーの情報を取得する。
ログインしているかどうかを判定する。
ログイン中のユーザーをログアウトさせる。
ログインしていない場合はログインページへ移動させる。
モデル名Controller.php ファイルで以下のように __construct クラスのコードを追加します。
class モデル名Controller extends Controller { public function __construct(){ $this->middleware('auth'); } : : }
全てのページで、アクセスがあった場合にログインされていない状態だと login のページへ強制的にリダイレクトされます。
ログインしているユーザーの情報を取得する。
以下のような形で Auth ファサードを使うとログイン中のユーザーの情報を取得できます。
// ログイン中のユーザー情報 Auth::user(); // ログイン中のユーザーID Auth::id();
例)Controller ファイルから blade ファイルへユーザー情報を渡す。
モデル名Controller.php に以下のように記入します。
use Auth; class モデル名Controller extends Controller { public function ブレード名(){ $auths = Auth::user(); return view('ブレード名', [ 'auths' => $auths ]); } }
ブレードファイル側で $auths 変数にユーザー情報のデータが渡ってきます。
例)blade ファイルでログイン中のユーザーIDを取得する。
ファイル名.blade.php ファイルに以下のように id メソッドを使用します。
<div class="user_id"> {{ Auth::id() }} </div>
ユーザーID がブレードファイルに表示されます。
ログインしているかどうかを判定する。
ユーザーがログインしているかどうかは、以下の Auth ファサードの check メソッドで判定することができます。ログイン済みの場合は true が返ってきます。
Auth::check();
例)ログインしていたらブレードファイルを切りかえる。
モデル名Controller.php にて以下のように記入します。
use Auth; if ( Auth::check() ) { // ログイン済みのときの処理 return view('モデル名.logged'); } else { // ログインしていないときの処理 return view('モデル名.notlogged'); }
例)ログインしている場合にのみブレードファイルで情報を表示する。
@if( Auth::check() ) {{ ログインユーザーにのみ表示する情報を記入 }} @endif
ログインしているかどうかを判定するディレクティブ
ログイン済みかどうかを判定するディレクティブも用意されています。blade ファイルで以下のように記入します。
@auth <p>ログインユーザーに表示する。</p> @endauth
ログイン済みでない場合は、guest ディレクティブで判定できます。blade ファイルで以下のように記入します。
@guest <p>ログインしていないユーザーに表示する。</p> @endguest
ログイン中のユーザーをログアウトさせる。
ユーザーのログアウトには Authファサードの logout メソッドを使用します。
Auth::logout();
例)ドメイン名/logout のアクセスがあったらログアウトさせる
web.php へ以下のように記入し、
Route::get('/logout', 'モデル名Controller@logout');
モデル名Controller.php ファイルへアクセスされたときにログアウトする処理を記入します。
use Auth; public function logout(){ return Auth::logout(); }
ドメイン名/logout にアクセスされた場合には強制的にログアウトされます。
No Comments & Tracbacks