Bonjour désolé de redéranger,
j'ai un gros problème dans mon application que je développe avec cakephp, ma function login() bug. La session ne s'enregistre pas mais en revenche le $this->Auth->login() marche car après je fais un redirect qui marche seulement si l'on rentre dans un if. Voila mon code :
Controller :
public function login(){
if($this->request->is('post')){
if($this->Auth->login()){
$this->Session->setFlash('Vous avez bien été connecté', 'flash', array('class' => 'success'));
return $this->redirect(array('controller' => 'pages', 'action' => 'account', 'admin' => true));
}else{
$this->Session->setFlash('Votre couple login / mot de passe n\'est pas valide', 'flash', array('class' => 'success'));
$this->request->data['User']['password'] = '';
}
}
}
La vue :
<?php $this->set('title_for_layout', 'Se connecter'); ?>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<?= $this->Form->create('User'); ?>
<?= $this->Form->input('email', array('label' => 'Adresse email', 'div' => 'form-group', 'class' => 'form-control')); ?>
<?= $this->Form->input('password', array('label' => 'Mot de passe', 'div' => 'form-group', 'class' => 'form-control')); ?>
<?= $this->Form->end('Se connecter'); ?>
</div>
</div>
Merci d'avance et bonne soirée
Bonjour,
as-tu regarder en détail ce que faisait la fonction login de Auth?
Et comme l'as Wa3aR si tu as un user dans $this->Auth->user() c'est que tu as un user de logger dans ton application...
Fais une fonction pour déconnecter ton utilisateur pour être sûr que tu n'ai personne de logger.
public function logout() {
$this->redirect($this->Auth->logout());
}
tu peux aussi checker que tu as un user connecté grace au composant authenticate
// Utilisez n'importe où
AuthComponent::user('id')
// Depuis l'intérieur du controler
$this->Auth->user('id');
Si tu as besoin de plus d'informations je te conseil de lire attentivement le cookbook de cakephp
http://book.cakephp.org/2.0/fr/core-libraries/components/authentication.html
essaie de faire un
if($this->Auth->login()){
debug($this->Auth->user);
die();
$this->Session->setFlash('Vous avez bien été connecté', 'flash', array('class' => 'success'));
return $this->redirect(array('controller' => 'pages', 'action' => 'account', 'admin' => true));
}
et regarde ce que cela renvoie. Si le tableau est vide c'est qu'il n'a pas réussi à connecter l'utilisateur. Sur quelle version de cakePHP es-tu ?
Salut, merci j'essaye ça demain et je suis sur CakePHP 2.X (je ne sais plus exactement quelle version désolé)
Tu peux nous poster la manière dont tu as déclaré ton componenent Auth ? Tu utilises une adresse email pour l'authentification donc je suppose que tu as du faire les modifs nécessaires ? (et pour les debug auth, il faut rajouter () à la fin :
debug($this->Auth->user());
Voila mon tableau components :
public $components = [
'Session',
'Cookie',
'DebugKit.Toolbar',
'Auth' => array(
'loginAction' => array(
'controller' => 'users',
'action' => 'login',
'admin' => false
),
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'email')
)
)
),
'Security' => array(
'csrfExpires' => '+1 hour'
)
];
Je viens d'essayer avec $this->Auth->user(); et j'ai bien mon tableau qui retourne toutes les informations de l'utilisateur. Mais ma fonction login() ne marche pas
J'ai pensé que au pire, je pourrais faire :
if($this->Auth->login()){
$this->Session->write('Auth.User, $this->Auth->user());
}
mais je ne sais pas si vous avez une meilleure idée
Si la fonction $this->Auth->user() te retourne les informatiosn utilisateurs c'est que tu es bien connecté ! Je ne vois pas pourquoi tu dis que ta fonction login fonctionne mal.
Je dis qu'elle fonctionne mal car :