2016-06-21 52 views
0

我试图在我的cakePhp应用程序中启用“记住我”选项。我用这个CakePHP remember me with Auth答案来实现它。 所以看起来我UsersController:CakePhp记住我的选项

if ((int)$this->request->data['User']['remember_me'] == 1) { 
       // remove "remember me checkbox" 
       unset($this->request->data['User']['remember_me']);  

       $this->request->data['User']['pw2'] = $this->request->data['User']['password']; 

       // write the cookie 
       $this->Cookie->write('remember_me_cookie', $this->request->data['User'], true, '2 weeks'); 
      } 

这是从模型中的逻辑:

$this->Cookie->httpOnly = true; 

     if (!$this->Auth->loggedIn() && $this->Cookie->read('remember_me_cookie')) { 
      $cookie = $this->Cookie->read('remember_me_cookie'); 
      $user = $this->User->find('first', array(
        'conditions' => array(
          'User.username' => $cookie['username'], 
          'User.password' => $cookie['password'], 
        ) 
      )); 


    } 

这是视图(我知道它并不完美)

echo $this->Form->checkbox('remember_me').'Remember me'; 

但请记住我的功能没有按没有工作。什么可能是错的?

+0

什么是你的CakePHP的版本? –

+0

@JacekBBudzyñski,2.4.4 – Vladislav

+0

下次请为该版本使用标签。我已经用2.4标签更新了这个问题。 – burzum

回答

0

用这个用户名和remember_me functinality

if ($this->request->is('post')) { 
       if ($this->Auth->login()) { 
        if (isset($this->request->data['User']['remember_me']) && $this->request->data['User']['remember_me'] == 1) { 
         $this->Cookie->delete('Auth'); 
         $cookie = array(); 
         $cookie['email'] = $this->request->data['User']['email']; 
         $cookie['password'] = $this->request->data['User']['password']; 
         $this->Cookie->write('Auth.User', $cookie, true, '+2 weeks'); 
         unset($this->request->data['User']['remember_me']); 
        } else { 
         $this->Cookie->delete('Auth'); 
        } 
        $this->redirect($this->Auth->redirect()); 
       } else { 
        $this->Session->setFlash(__('Invalid email or password.'), 'default', array('class' => 'error')); 
       } 
      } 
      $cookie = $this->Cookie->read('Auth'); 
      if (isset($cookie) && !empty($cookie)) { 
       $this->request->data['User']['email'] = $cookie['User']['email']; 
       $this->request->data['User']['password'] = $cookie['User']['password']; 
       $this->request->data['User']['remember_me'] = 1; 
      }