web-dev-qa-db-fra.com

Lequel utiliser Auth :: check () ou Auth :: user () - Laravel 5.1?

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é?

14
tam5

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.

18
Thomas Kim

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.

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

essayez ça a fonctionné pour moi.

1
Khamroddin

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! ; )

1
ivahidmontazer