Я как раз работаю над компонентом управления пользователями нашего нового проекта. План такой:
Но есть некоторые проблемы с автоматическим входом в систему. . это часть кода, который я использую:
<?php
...
// set userstatus to "active" and delete meta information "activation_key"
// then automatically login
$this->User->id = $id;
$this->User->saveField('modified', date('Y-m-d H:i:s') );
$this->User->saveField('status', 1 );
// $this->User->deleteActivationKey ....
$this->Auth->login($this->User->read());
$this->Session->setFlash(__('Successfully activated account. You are now logged in.'));
$this->User->saveField('last_login', date('Y-m-d H:i:s') );
$this->redirect(array('controller' => 'pages'));
...
Это работает до тех пор, пока вы не захотите получить информацию о вошедшем в систему пользователе с помощью функции user() компонента Auth.
Мы используем это в AppController->beforeRender, чтобы иметь информацию о пользователе во всем приложении:
$this->set('auth', $this->Auth->user());
но после этого действия автоматического входа я получаю уведомления о неопределенном индексе. (например, обратившись к $auth['id'] в представлении). print_r() показывает мне только имя пользователя и хешированный пароль текущего пользователя. При ручном входе все работает нормально. это должно быть что-то с автоматическим входом в систему после активации учетной записи.
Проблема с сеансом? Что я делаю не так?