Voici la fonction login :

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirectUrl());
        } else {
        $this->Session->setFlash(__("Nom d'utilisateur ou mot de passe invalide, merci de réessayer"));
        }
    }
}

Et ça ne fait que me renvoié ce message :
Nom d'utilisateur ou mot de passe invalide, merci de réessayer

14 réponses


Bonsoir.

Il te manque une chose, tu as mal regardé la documentation.

Tu fais erreur, babela utilise la V2 et non la V3.
@babela: Haches-tu bien le mot de passe lors de la sauvegarde de celui-ci ?

Bonjour,
J'ai le même problème !! :s :s
aidez nous svp

Bonsoir.
Lorsque vous ajoutez le nouvel utilisateur (inscription), est-ce que vous faites bien le hach du mot de passe (password), soit dans l'action correspondante dans le controller ou alors dans le model ?

Bonjour,
Je ne sais pas si le hash du mot de passe marche ou pas quand j'ajoute un nouvel utilisateur :s , comment je dois savoir ?
voila la fonction que j'ai utilisé pour le hash:
protected function _setPassword($password)
{
return (new DefaultPasswordHasher)->hash($password);
}
}
et elle se trouve dans Model\Entity\utilisateur.php
Merci

Re,
Je viens de confirmer que le hash ne marche pas aussi :s :s
que dois je faire ?
Merci

Bonsoir.
C'est normal que le hachage du password ne fonctionne pas, étant donné que la fonction que tu montres est pour la version 3 de CakePHP.
Pour la version 2 de CakePHP, soit il faut que tu passes soit par la fonction beforeSave du modèle User ou alors que tu haches le password avant la sauvegarde en base de données.

$this->request->data['User']['password'] = $this->Auth->password($this->request->data['User']['password']);

Ceci bien sur avant la sauvegarde en base de données dans la fonction de l'ajout d'un nouvel utilisateur.

Par contre, je te conseillerais plutôt la première méthode, étant donné que le hachage du mot de passe se fera automatiquement.

Re
oui je vois, et je te remercie, mais justement j'utilise la version 3 de CakePHP

Ne dis pas que toi c'est la même chose alors, car le code de l'auteur du sujet révèle qu'il utilise la V2.
Donc penses à préciser.
Du coup, donnes nous plus de précisions, car là ça fait un peu juste, montres-nous un peu de code.

Oui c'est vrai j'avais pas remarqué que l'auteur utilise la V2, je suis désolé en tt cas
Pour plus de précision,je vais vous montré le code,et peut être que vous pouriez m'aider , mais j'ai une question d'abord, esqu'on est obligé d'utiliser une table "users" car moi j'ai utilisé "utilisateurs" , et je pense que le problème vient de là, non ?
Merci :)

Si tu utilises une autre table que la table users pour l'authentification, il te faut le préciser dans le composant Auth.
Par exemple dans ton cas :

$this->Auth->config('authenticate', [
    'Form' => [
        'userModel' => 'Utilisateurs'
        // Autres définitions
    ]
]);

Tu n'es pas obligé de suivre mon conseil, bien que le Framework permet faire les modifications en les définissant, mais il est préférable de suivre les conventions de CakePHP.

Donc d'aprés ce que j'ai compris, je dois modifier AuthComponent qui se trouve dans le dossier vendor ?

Enfet je viens carrément de changer de table, j'ai mis Users, et sa a marché ENFIN ! , le mot de passe est hashé, et l'authentification marche !
Je vous remercie pour votre aide :)

Donc d'aprés ce que j'ai compris, je dois modifier AuthComponent qui se trouve dans le dossier vendor ?

Non, pas du tout, dans ton AppController.
Pour utiliser le composant, il te faut l'instancier et le déclarer.
Il faut quand même consulter la documentation du Framework : Authentification.
C'est l'un des rares Framework à être bien documenté, et avoir une traduction quasiment complète, alors n'hésitez pas à la consulter.

Justement j'ai suivi le tutoriel de la création d'un blog sur http://book.cakephp.org/
En tout cas je vous remercie pour les conseils que vous m'avez donnée , je vais essayé de les suivre.Et je vais essayé de préciser dans le Authcomponent que j'utilise une autre table que "Users"
Merci a vous :)