2016-06-21 2 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; 
      } 
Смежные вопросы