Il serait intéressant de pouvoir utiliser le débogueur lorsque l'authentification avec Auth::attempt() ne fonctionne pas dans notre application Laravel. Mais puisque Auth est une façade, il est parfois ardu de retrouver le code de ses méthodes.
Prenons le cas où on tente d'authentifier l'usager comme suit :
$courriel= $request->courriel;
$motdepasse = $request->motdepasse;
$reussi = Auth::attempt(['courriel' => $courriel, 'password' => $motdepasse, 'actif' => 1]);
Si $reussi est toujours à false même si vous êtes certains que les informations d'authentification sont bonnes, suivez cetet piste pour vous aider à déboguer l'authentification :
Vous pouvez placer un point d'arrêt au début de cette méthode pour vérifier la valeur des informations d'authentifications (paramètre $credentials) que Laravel s'apprête à utiliser (ex : ["courriel" => "unusager@undomaine.com", "password" => "ilfaitbeau", "actif" => 1]).
Si les informations contenues dans le paramètre $credentials ne sont pas les bonnes :
À ce stade, vous pouvez vérifier les informations sur l'usager (objet $user) que Laravel a retrouvé dans la base de données à partir des informations d'authentification. Notez que le mot de passe n'a pas encore été utilisé à ce stade.
Si l'usager n'a pas été bien retrouvé dans la BD :
C'est ici que Laravel va chercher le mot de passe crypté dans l'objet $user retrouvé plus tôt.
Si le champ ne s'appelle pas password, Laravel exécutera la méthode getAuthPassword() que vous aurez codée dans le modèle de l'usager.
À ce stade, password_verify($value, $hashedValue) devrait retourner true si vous avez fourni le bon mot de passe.
Si ce n'est pas le cas :
$2y$10$jqLafXdD.ZB.h2xkZ4t72.JKJ03aDyy2651tpgGlTbBFpGx3nStsi
C'est donc cette chaîne qui doit être copiée dans le champ du mot de passe. Attention : si vous travaillez avec MySQL Workbench, n'oubliez pas de cliquer sur pour que vos modifications soient enregistrées.
Tentez ensuite de vous connecter à l'aide de cet usager. Si cela fonctionne, vous devrez réviser le code qui se charge de créer vos usagers.
▼Publicité