2013-03-24 1 views
0

Я пытаюсь реализовать функцию входа, в которой пользователь может использовать свое имя пользователя или адрес электронной почты. Я разработал логин с обоими, но когда пользователь успешно вступил в систему с его адресом электронной почты, 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'); 
     } 
    } 

} 
+0

AuthMessage хранится внутри сессии, и будут удалены из сеанса после того, как показывает его с помощью 'эхо $ this-> session-> вспышки();'. Возможно, вы не показывали это сообщение на странице входа в систему, когда логин был неудачным, поэтому сообщение о неудачном входе в систему не было очищено? – thaJeztah

ответ

0

Я редактировал свой оригинальный пост, чтобы удалить сообщения из переменных сеанса ,

<?php 

$this->Session->delete('Message.flash'); 
$this->Session->delete('Message.auth'); 

?> 

Надеюсь, это поможет!

-Эндрю