2016-06-21 8 views
0

私はcakePhpアプリケーションで "remember me"オプションを有効にしようとしています。私はこれを実装するためにこのCakePHP remember me with Auth答えを使用しました。これは、モデルからの論理である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'); 
      } 

: だから私がUserControllerに見えます。これは、図である

$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'; 

(私はそれが完璧ではないことを知っている)しかし、関数はdoesnの私を覚えて仕事はありません。何が間違っていますか?

+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; 
      } 
関連する問題