Si je veux vérifier si l'utilisateur est connecté dans mon Laravel 5.1 application, je peux utiliser
if (Auth::user()) {...}
ou
if (Auth::check()) {...}
y a-t-il une raison de préférer l'un à l'autre lors de la vérification si un utilisateur est connecté?
Non, la réponse acceptée n'est pas correcte.
Auth::check()
passe à Auth::user()
. Il en est ainsi depuis aussi longtemps que je me souvienne.
En d'autres termes, Auth::check()
appelle Auth::user()
, en obtient le résultat, puis vérifie si l'utilisateur existe. La principale différence est qu'il vérifie si l'utilisateur est nul pour vous afin d'obtenir une valeur booléenne.
Voici la fonction de vérification:
public function check()
{
return ! is_null($this->user());
}
Comme vous pouvez le voir, il appelle la méthode user()
, vérifie si elle est nulle, puis renvoie une valeur booléenne.
Si vous voulez simplement vérifier si l'utilisateur est connecté, Auth::check()
est plus correct.
Auth::user()
fera un appel à la base de données (et sera légèrement plus lourd) que Auth::check()
, qui devrait simplement vérifier la session.
Auth::guard('admin')->user()->email
essayez ça a fonctionné pour moi.
Je vous recommande de définir $user = auth()->user();
Si vous voulez vérifier si l'utilisateur est authentifié ou non et propriétés du modèle utilisateur comme email, nom, ... dans votre code.
Parce que auth()->user()
et auth()->check()
vont tous deux interroger la base de données. Si vous voulez plus de vitesse dans vos applications, définissez $user = auth()->user();
alors vous pouvez l'employer dans vos codes et vous pouvez également vérifier si l'utilisateur est authentifié via $user == null;
.
N'utilisez pas auth()->check()
et auth()->user()
à la fois dans une seule fonction ou un seul bloc de code pour avoir des requêtes faibles vers la base de données et des applications plus rapides! ; )