Bonjour ,
j'essaye de mettre en place une connexion persistente avec cakephp, mais j'ai beau cherché je ne vois pas ou j'ai fait une erreur et mon cookie ne s'affiche pas quand j'affiche les variables de cookie !
ma fonction login dans UsersController
if ($this->Auth->login()) {
$this->User->id = $this->Auth->user('id');
$this->User->saveField('lastlogin',date('Y-m-d H:i:s'));
$this->Session->write('Auth.timeout', strtotime('+3 days'));
if ($this->Auth->User('role')=="admin") {
return $this->redirect(array('action'=>'index','controller'=>'Administration','admin'=>true));
}
else{
return $this->redirect(array('action'=>'index','controller'=>'pages','admin'=>false));
}
if (!empty($d['remember'])&&$d['remember']==1) {
$cookie = array();
$cookie['mail'] = $this->data['User']['mail'];
$cookie['pass'] = $this->Auth->password('pass');
$this->Cookie->write('Auth.User', $cookie, true, '+2 weeks');
unset($this->data['User']['remember']);
}
}
et dans mon AppController
public function beforeFilter (){
//Cookie
if (!$this->Auth->user('id')) {
$cookie = $this->Cookie->read('Auth.User');
if (!is_null($cookie)) {
if ($this->Auth->login($cookie)) {
// Clear auth message, just in case we use it.
$this->Session->delete('Message.auth');
$this->redirect($this->Auth->redirect());
}
}
}
}
Je n'ai malheureusement pas le temps de t'aider, je cours vite au travail mais j'ai fait une petite recherche pour toi.
http://stackoverflow.com/questions/12447487/cakephp-remember-me-with-auth
Dis moi en des nouvelles, peut-être qu'au bureau j'aurai le temps de passer ici
Si tu es sous cake 2.x tu as ce plugin qui fonctionne tres bien.
[]()https://github.com/FriendsOfCake/Authenticate
C'est normal que la création de ton cookie ne fonctionne pas.
Tu as déja une variable $d qui sort de nulle part, du coup, vu qu'elle n'existe pas, le code dans :
if (!empty($d['remember'])&&$d['remember']==1) {
}
ne risque pas de s'éxécuter.
En plus de ça, ce n'est plus :
$this->data
mais :
$this->request->data
Pour finir, dans un cookie, tu ne peux sauvegarder qu'une valeur et non plusieurs, et encore moins un tableau.
j'ai bien déclarer le $d cest juste un oublie de ma part quand je copiais le code ici mais j'ai bien $d = $this->request->data['User']; avant le
if ($this->Auth->login()) {
C'est tout à fait normal que ton cookie n'existe pas, étant donné que tu fais une redirection avant qu'il ne puisse être créé.