web-dev-qa-db-ja.com

Auth :: check()またはAuth :: user()のどちらを使用するか-Laravel 5.1?

Laravel 5.1アプリケーション内でユーザーがログインしているかどうかを確認したい場合は、

if (Auth::user()) {...}

または

if (Auth::check()) {...}

ユーザーがログインしているかどうかを確認するときに、どちらか一方を優先する理由はありますか?

14
tam5

いいえ、受け入れられた答えは正しくありません。

Auth::check()Auth::user()に従います。私が覚えている限り、それはそうです。

つまり、Auth::check()Auth::user()を呼び出し、その結果を取得して、ユーザーが存在するかどうかを確認します。主な違いは、ユーザーがnullかどうかをチェックしてブール値を取得することです。

これはチェック関数です:

_public function check()
{
    return ! is_null($this->user());
}
_

ご覧のとおり、これはuser()メソッドを呼び出し、それがnullかどうかを確認してから、ブール値を返します。

18
Thomas Kim

ユーザーがログインしているかどうかを確認するだけの場合は、Auth::check()の方が適切です。

Auth::user()Auth::check()よりもデータベース呼び出しを行い(少し重い)、セッションをチェックするだけです。

6
samlev
Auth::guard('admin')->user()->email 

これを試してみました。

1
Khamroddin

$user = auth()->user();を定義することをお勧めします。ユーザーが認証されているかどうかを確認する場合は、コード内で電子メール、名前などのユーザーモデルプロパティandユーザーモデルプロパティを使用します。

auth()->user()auth()->check()はどちらもデータベースにクエリを実行するためです。アプリの速度を上げたい場合は、$user = auth()->user();を定義し、コードで使用して、ユーザーが_$user == null;_で認証されているかどうかを確認できます。

1つの関数または1つのコードブロックでauth()->check()auth()->user()の両方を使用して、データベースへのクエリを少なくし、アプリを高速化しないでください。 ; )

1
ivahidmontazer