Я пытаюсь реализовать функцию входа, в которой пользователь может использовать свое имя пользователя или адрес электронной почты. Я разработал логин с обоими, но когда пользователь успешно вступил в систему с его адресом электронной почты, authError все еще мигает (пользователь входит в систему). Я добавил комментарий «ЗДЕСЬ» в действие входа, и я не уверен, что произойдет после этого с перенаправлением.CakePHP 1.3: получение сообщения authError при успешном входе в систему
Вот соответствующие биты моего кода:
App Controoler: контроллер
public $components = array(
'Auth' => array(
'authorize' => 'controller',
'loginRedirect' => array(
'controller' => 'users',
'action' => 'welcome_page'
),
'loginError' => 'Invalid user name/password',
'authError' => 'You don\'t have permission'
),
'Session',
);
Пользователь:
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('add');
}
public function login() {
// At this point, the Auth Component is unable to log in user, so check with email.
if (!empty($this->data) &&
!empty($this->Auth->data['User']['username']) &&
!empty($this->Auth->data['User']['password'])) {
// Look for user with email address using the entered username
$user = $this->User->find('first', array(
'conditions' => array(
'User.email' => $this->Auth->data['User']['username'],
'User.password' => $this->Auth->data['User']['password']
),
'recursive' => -1
));
// Check if a matching user is found and that if login was succesfull
if (!empty($user) && $this->Auth->login($user)) {
if ($this->Auth->autoRedirect) {
// NOTE: user trying to log in with email reaches HERE
$this->redirect($this->Auth->redirect()); // this is the default authentication redirect defined in App Controller
}
} else {
$this->Session->setFlash($this->Auth->loginError, $this->Auth->flashElement, array(), 'auth');
}
}
}
AuthMessage хранится внутри сессии, и будут удалены из сеанса после того, как показывает его с помощью 'эхо $ this-> session-> вспышки();'. Возможно, вы не показывали это сообщение на странице входа в систему, когда логин был неудачным, поэтому сообщение о неудачном входе в систему не было очищено? – thaJeztah