[PHP] Laravel でユーザー認証されている時のユーザー情報の値のとり方や、判定する関数など

Laravel 標準のユーザー認証機能でログインされている時に、どうやってユーザー情報をとるかや、ログイン時の条件分岐の仕方などをまとめました。動作を確認している Laravel のバージョンは 5.7 です。

公式ドキュメント:認証 5.7 Laravel

<目次>
ログインしていない場合はログインページへ移動させる
ログインしているユーザーの情報を取得する。
ログインしているかどうかを判定する。
ログイン中のユーザーをログアウトさせる。

ログインしていない場合はログインページへ移動させる。

モデル名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 にアクセスされた場合には強制的にログアウトされます。

Related Article

    関連する記事はありません。

No Comments & Tracbacks

Leave a Comment

Emailは公開されません。*は必須項目です。


*


Categorys

Tags

CSS3 ダッシュボード ヘッダー トラブル コードサンプル コンテンツ スライドショー jQueryプラグイン php 引っ越し 素材 お知らせ JavaScript Facebook CSS カテゴリー 投稿タイプ IE HTML5 Shareボタン seo レスポンシブ Photoshop タクソノミー ナビゲーション カスタムメニュー Git Macアプリ サイドバー WPセキュリティ SVG iTunes PHPリファレンス API WP使い方 query_posts データベース get_posts() 条件分岐 コメント function RSS スマートフォン Sass/Compass さくらVPS