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());
                }
            }
          }
}

8 réponses


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

ndiayejp
Auteur

D'accord merci je vais voir ça rapidement ! je te tiens au courant !

Si tu es sous cake 2.x tu as ce plugin qui fonctionne tres bien.
[]()https://github.com/FriendsOfCake/Authenticate

Si tu est sous cake3 c'est le meme plugin :P

Attention pas la meme branche.

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.

ndiayejp
Auteur

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éé.