9
votes

L'authentification Laravel 4 ne fonctionne pas

J'ai une application Laravel 4 dans laquelle j'ai configuré un utilisateur. Dans ma liaison de connexion, j'appelle auth :: tentative code> avec l'email et le mot de passe, mais cela revient toujours comme faux. J'ai définitivement le mot de passe correct et le hachage correct dans la base de données comme hash :: check code> retourne vrai.

Je pense que cela peut être dû à l'utilisation de code> comme connexion champ au lieu de nom d'utilisateur code>, mais je ne peux voir aucun réglage pour cela. Cette question implique que vous pouvez ajouter une option à config / auth.php code > Mais ça n'a pas fonctionné. Cette question dit d'utiliser nom d'utilisateur code> comme clé de tableau, mais puis J'obtiens une erreur SQL car il essaie de sélectionner sur un champ Nom d'utilisateur dans la base de données. P>

Dois-je ajouter quelque chose au modèle d'utilisateur pour spécifier le champ Nom d'utilisateur? Voici mon itinéraire de connexion: P>

Route::post('login', function() {

    // data from login form
    $credentials = array(
        'email' => Input::get('email'),
        'password' => Input::get('password')
    );

    $auth = Hash::check(Input::get('password'), Hash::make('mypass'));
    var_dump($auth); // this is TRUE

    // login was good
    $auth = Auth::attempt($credentials);
    var_dump($auth); // this is FALSE
});


1 commentaires

La touche Array doit correspondre à une colonne que vous utilisez pour authentifier les utilisateurs de la base de données. Ceci est mentionné dans le Docs . Avez-vous modifié le modèle utilisateur par défaut que L4 est livré?


3 Réponses :


6
votes

dans l'application / config / app.php Assurez-vous que vous avez la "touche" définie. Cela m'a fait sortir mes cheveux. Tout apparaîtra au travail, le mot de passe semble haché dans la base de données, mais il retournera toujours false jusqu'à ce que vous définissiez cette clé et que vous redistribez votre mot de passe dans la DB.

"PHP Artisan Key: générer"


1 commentaires

Merci beaucoup d'homme. J'utilise le générateur Laravel 4 de Jeffery Way et j'ai totalement oublié ce point critique dans l'installation de Laravel avant de commencer à coder mes itinéraires et contrôleurs.



11
votes

J'ai trouvé le problème. Comme suggéré par Jason dans le commentaire ci-dessus, j'avais modifié le fichier modèles / user.php et supprimé certaines fonctions que je n'ai pas réalisées étaient nécessaires.

Le getAuthentifier () et getAuthPassword () Les méthodes doivent être incluses dans le modèle d'utilisateur pour l'authentification!


1 commentaires

Qu'ils font. Le modèle doit également implémenter l'userface userface et rappelInterface .



1
votes

avait le même problème et m'a fait transpirer pendant des heures. Vérifiez définitivement votre modèle user.php et assurez-vous de ne pas avoir écrasé le par défaut. Merci Jason!


0 commentaires