Laravel 5.1アプリケーション内でユーザーがログインしているかどうかを確認したい場合は、
if (Auth::user()) {...}
または
if (Auth::check()) {...}
ユーザーがログインしているかどうかを確認するときに、どちらか一方を優先する理由はありますか?
いいえ、受け入れられた答えは正しくありません。
Auth::check()
はAuth::user()
に従います。私が覚えている限り、それはそうです。
つまり、Auth::check()
はAuth::user()
を呼び出し、その結果を取得して、ユーザーが存在するかどうかを確認します。主な違いは、ユーザーがnullかどうかをチェックしてブール値を取得することです。
これはチェック関数です:
_public function check()
{
return ! is_null($this->user());
}
_
ご覧のとおり、これはuser()
メソッドを呼び出し、それがnullかどうかを確認してから、ブール値を返します。
ユーザーがログインしているかどうかを確認するだけの場合は、Auth::check()
の方が適切です。
Auth::user()
はAuth::check()
よりもデータベース呼び出しを行い(少し重い)、セッションをチェックするだけです。
Auth::guard('admin')->user()->email
これを試してみました。
$user = auth()->user();
を定義することをお勧めします。ユーザーが認証されているかどうかを確認する場合は、コード内で電子メール、名前などのユーザーモデルプロパティandユーザーモデルプロパティを使用します。
auth()->user()
とauth()->check()
はどちらもデータベースにクエリを実行するためです。アプリの速度を上げたい場合は、$user = auth()->user();
を定義し、コードで使用して、ユーザーが_$user == null;
_で認証されているかどうかを確認できます。
1つの関数または1つのコードブロックでauth()->check()
とauth()->user()
の両方を使用して、データベースへのクエリを少なくし、アプリを高速化しないでください。 ; )