Bonjour,
Après plusieurs recherche impossible de trouver une solution pourtant le problème semble simple..
J'essai de connecter un utilisateur aprés l'avoir enregistrer via la fonction login().
Le probleme c'est que quand j'entre le login et mdp aucune requete sql est effectué et même si je met un login incorrecte il passe la verification $this->Auth->login() <- true mais reste déconnecté!
Ma table se nomme players et non users, j'ai donc nommé mon controller PlayersController et mon model Player
Voici le code de login() :

function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            //Il arrive ici même quand les identifiant sont incorrectes!
            $this->Session->setFlash('Vous êtes maintenant connecté!', 'notif');
            $this->redirect('/');
        }else{
            $this->Session->setFlash('Identifiant incorrect!', 'notif',array('type'=>'error-message'));
        }
    }
}

Voici le beforeFilter de PlayersController :

function beforeFilter(){
    $this->Auth->userModel = 'Player';
    $this->Auth->fields = array('username' => 'username', 'password' => 'password');
    $this->Auth->loginAction = array('admin' => false, 'controller' => 'players', 'action' => 'login');
    $this->Auth->userScope = array('Player.activate' => 1);
}

La vue login.ctp :

<h2>Connection</h2>
<?php echo $this->Form->create('Player'); ?>
<?php echo $this->Form->input('username', array('label' => 'Login')); ?>
<?php echo $this->Form->input('password', array('label' => 'Mdp')); ?>
<?php echo $this->Form->end('Se connecter'); ?>

Si quelqu'un pouvait me sortir de cette galère sa serait sympa ^^
Merci!

3 réponses


2bleyman
Auteur
Réponse acceptée

J'ai réussi à faire fonctionner le système en utilisant une table Users et non Players!
Je vais renommer ma table mais si quelqu'un sait comment utiliser une autre table que Users pour la connexion qu'il me fasse signe!
Merci

Bonjour,

Oui c'est assez étrange en effet.....
Est-ce que le mot de passe appartenant à l'utilisateur est bien crypté en base ? Ou bien est-il en clair ?
Car en réalité, depuis la version 2.0, il faut manuellement crypter le mot de passe en appliquant un Security::hash dessus. Ceci peut-être la cause de ton problème....

2bleyman
Auteur

Merci de ta réponse!
Oui le mot de passe est bien crypter avec cette ligne :

$d'Player']'password'] = Security::hash($d'Player']'password'],null,true);

J'ai même essayer 3 utilisateurs ayant 3 cryptages différents, le 1er sans cryptage en claire, le 2eme avec le cryptage ci-dessus et le 3eme en MD5 au cas où, toujours le même résultat!