Bonjour à toutes et tous,
J’aimerais créer un système de "remember me" pour l'espace membre que je développe actuellement avec CakePHP.
J'essaie tant bien que mal d'enregistrer des données dans le cookie mais je n'y arrive pas...
J'ai bien associé le composant "Cookie" à mon contrôleur et j'ai mis en place le code suivant (voir les commentaires) :
//Le cookie est vide je le remplis
public function setcook() {
$this->Cookie->write('Auth.User.prenom', 'Larry', false, 3600);
var_dump($this->Cookie->read('Auth.User.prenom'));// je constate que les données sont bien enregistrés
die();
}
//Je récupère la valeur
public function getcook() {
var_dump($this->Cookie->read('Auth.User.prenom'));//resultat => NULL
die();
}
Qui peut me dite comment maitriser ce foutus composant ?? Merci d'avance pour votre aide.
Merci Bahamut pour la réponse
En fait ça fonctionne si je ne fais pas de "die()", donc mon problème venait de là... peut être que le cookie n'a pas le temps de s'écrire.
C'est le coup de p... , mais bon l'essentiel c'est de s'en rendre compte.
Bonsoir,
Voici comment moi j'ai fait :
UsersController.php :
public function login(){
if ($this->request->is('post')) {
if ($this->Auth->login()) {
if ($this->request->data'User']'rememberMe'] == 1) {
unset($this->request->data'User']'rememberMe']);
$this->request->data'User']'password'] = $this->Auth->password($this->request->data'User']'password']);
$this->Cookie->write('rememberMeCookie', $this->request->data'User'], true, '2 weeks');
}
$this->Session->setFlash("Vous êtes maintenant connecté","alert", array(
'plugin' => 'BoostCake',
'class' => 'alert-success autoclose'
));
$this->redirect('/');
}else{
$this->Session->setFlash("Identifiants incorrects","alert", array(
'plugin' => 'BoostCake',
'class' => 'alert-danger autoclose'
));
}
}
}
AppController.php :
public function beforeFilter() {
parent::beforeFilter();
if (!$this->Auth->loggedIn() && $this->Cookie->read('rememberMeCookie')) {
$cookie = $this->Cookie->read('rememberMeCookie');
$user = $this->User->find('first', array(
'conditions' => array(
'User.mail' => $cookie'mail'],
'User.password' => $cookie'password']
)
));
if ($user && !$this->Auth->login($user'User'])) {
$this->redirect('/users/logout'); // destroy session & cookie
}
}
}
Cordialement :)