2012-01-17 2 views
0

Я пытаюсь реализовать авторизацию на основе ACL для своего веб-проекта. У меня есть метод входа в систему:CakePHP 2.0 Auth-> user()

function login() { 
    if ($this->request->is('post')) { 
    if ($this->Auth->login()) { 
     debug($this->Auth->user()); 
     //return $this->redirect($this->Auth->redirect()); 
    } else { 
     $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth'); 
    } 
    } 
} 

Вместо перенаправления, я распечатать вошедшего в пользовательской информации. И это хорошо работает. Однако, если я debug($this->Auth->user()) в AppController

function beforeFilter() { 
    parent::beforeFilter(); 

    debug($this->Auth->user()); 

    $user = $this->Auth->user(); 
    if ($user) { 
    $this->set('isAuthed', true); 
    $this->_userId = (int) $user['User']['id']; 
    } else { 
    $this->set('isAuthed', false); 
    } 
} 

я ничего не получаю. Что может быть проблемой?

+0

Вы включаете компонент 'Auth' в' AppController'? – Ross

+0

@ Росс да, конечно. Кажется, что помощник 'Session' работает неправильно. Если я пишу что-то в 'UserController' с' $ this-> Session-> write ('test', test) ', я не могу прочитать его в' AppController'. Есть идеи? – nil

+0

Возможно, вы уже проверили это, но файлы cookie включены в вашем браузере? Если это так, обновляется ли значение cookie CAKEPHP после каждого запроса? (btw, в AppController вам не нужно вызывать 'parent :: beforeFilter()', поскольку это пустой метод в 'Controller') – nIcO

ответ

0

beforeFilter() выполнен до нормального действия, поэтому $this->Auth->login() еще не запущен. Возможно, попробуйте отладку в afterFilter().

Смежные вопросы