Проблема с Cakephp Cookie - PullRequest
0 голосов
/ 12 июля 2011

Я пытаюсь написать cookie после входа в систему, но, похоже, ничего не сохраняется.

Я что-то не так делаю?

function login() {

    if ($this->Session->read('Auth.User')) {
        if($this->data['User']['remember']){
        $cookie = array();
        $cookie['username'] = $this->data['User']['email'];
        $cookie['password'] = $this->data['User']['password'];
        $this->Cookie->write('Auth.User', $cookie, true, '+2 weeks');
        unset($this->data['User']['remember']);
        }
        $this->Session->setFlash('You are logged in!');
        $this->redirect(array('action' => 'logs'));
    } else {

    $this->Session->setFlash('Invalid username and password combination');
    $this->redirect('/', null, false);

    }

}       

1 Ответ

1 голос
/ 13 июля 2011

Для выполнения вашей функции входа в систему вам необходимо установить $ this-> Auth-> autoRedirect = false в оператор beforeFilter (в AppController или UsersController)

Это полная функция входа и функция выхода из системы:

function beforeFilter(){
  parent::beforeFilter();
  $this->Auth->autoRedirect = false;
}

function login(){
    // Check if user is already logged in
    if($this->Auth->user()){
        // Check remember me checkbox
        if(!empty($this->data) && $this->data['User']['remember']){
            // write the cookie
            $this->Cookie->write('Auth.User', $this->Auth->user('id'), true, '+2 weeks');
            unset($this->data['User']['remember']);

        }else{
            // if the user is already logged in redirect him with a message
            $this->Session->setFlash('You are logged in!');
        }

        $this->redirect($this->Auth->redirect());
    }

    // Login user from cookie
    if(empty($this->data)){
        $user_id = $this->Cookie->read('Auth.User');
        if (!is_null($user_id)) {
            $user = $this->User->read($user_id);
            if($this->Auth->login($user)){
                // clear auth message
                $this->Session->delete('Message.auth');
                $this->redirect($this->Auth->redirect());
            }else{
                //delete invalid cookie
                $this->Cookie->delete('Auth.User');
            }
        }
    }
}

function logout(){
    $this->Cookie->delete('Auth.User');
    $this->redirect($this->Auth->logout());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...