Cookie et cakephp Login

Par ndiayejp, il y a 11 ans


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

le furet 17, il y a 11 ans

Attention pas la meme branche.

ndiayejp, il y a 11 ans

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

makamo, il y a 11 ans

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

Lartak, il y a 11 ans

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, il y a 11 ans

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()) {

Lartak, il y a 11 ans

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