Bonjour,
ca fait maintenant plusieurs jours que je suis bloqué sur ce probleme. La fonction login() me retourne constamment false.
Je suis sur cakephp 2.5.1.

Voici le code, je précise que je suis débutant ^^

AppControler

class AppController extends Controller {
    public $components = array('Session', 'Cookie',        
        'Auth' => array(
            'authenticate' => array('Form')
            ));

    public function beforeFilter() {
        parent::beforeFilter();
    }              

}

UsersController

public function login() {
     if(!empty ($this->request->data)){
         if($this->Auth->login()){
             die('logged');
         }else{

         }
         debug($this->request->data);
         debug($this->Auth->login());

     }

    }

en debug j'ai donc bien mon

array(
'User' => array(
'username ' => 'monidentifiant',
'password ' => 'monpassword'
)
)

et le debug de Auth à False

la vue:

login.ctp

<?= $this->Form->create('User') ;?>
<?= $this->Form->input('username ', array('label' => 'username', 'placeholder' => "Identifiant")); ?>
<?= $this->Form->input('password ', array('label' => 'password', 'placeholder' => "Mot de passe", 'type' => 'password')); ?>
<?= $this->Form->end('se connecter') ;?> .

Concernant mon model User,

je n'ai rien mis de particulier à part un $validate etc (ce qui n'a rien à voir avec l'authentification)

Merci ^^

3 réponses


0-sony
Auteur
Réponse acceptée

J'ai enfin trouvé la réponse, une faute toute bête... vraiment toute bête je m'en veux, et enfin j'ai trouvé.
Le probleme se trouvait dans mon forme... j'ai marqué "username " et "password " et non "username" et "password" , du coup cakephp prenais l'espace en compte....

pas fière de cette bêtise, mais au moins c'est résolu ! :D

Dans ta base de données, les mots de passe sont bien cryptés ?

0-sony
Auteur

bonjour,

oui ils sont cryptés,

j'ai rajouté hier ce bout de code dans mon AppController

public function beforeSave($options = array()) {
        if (!empty($this->data'User']'password'])) {
            $passwordHasher = new SimplePasswordHasher(array('hashType' => 'sha256'));
            $this->data'User']'password'] = $passwordHasher->hash(
                    $this->data'User']'password']
            );
        }
        return true;
    }

le nombre de caractere au cryptage est plus long dans le bdd désormais. Je précise que je suis en VARCHAR 255 pour le password.