2012-04-04 4 views
0

У меня проблема с cakephp 2.1 и Auth.cakephp 2.1 регистрация и вход в систему

В моих AppControlles У меня есть функция getUserdetails()

if (($user = $this->Auth->user()) != null) 
    { 
     $this->loadModel('User'); 
     $tmp = $this->User->find('first',array(
      'conditions' => array('username' => $user['User']['username'], 
         'password'=> $user['User']'password'], 
       'active' => 1), 
      'recursive' => -1)); 

     if(!isset($tmp['User'])) 
     return null; 

     $this->_userDetails = $tmp['User']; 
     $this->set('userDetails', $this->_userDetails); 
    } 
    else 
     return null 

Когда пользователь в первую очередь SIGNUP $ this-> auth-> пользователя() возвращает

array(
    'User' => array(
     'password' => '*****', 
     'username' => 'me', 
     'remember_me' => '1' 
    ) 
) 

где пароль кодируется md5. Если я выйду из системы и снова войдите в пароль, то в предыдущем массиве будет возвращен обычный текст, поэтому User-> find возвращает false. Есть ли способ сделать для этого одну функцию? Как узнать, является ли пароль из $ this-> Auth-> user() md5 или нет?

благодаря

ответ

0

Попробуйте это:

public function login() { 
    //If a user is already logged in, redirect him 
    if ($this->Session->read('Auth.User')) { 
     //$this->Session->setFlash('You are logged in!'); 
     $this->redirect(array('controller' => 'showspage', 'action' => 'home')); 
    } 

    if ($this->request->is('post')) { 
     $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']); 

     if ($this->Auth->login()) { 
      $this->redirect($this->Auth->redirect()); 
     } else { 
      $this->Session->setFlash('Wrong username or password'); 
      $this->redirect(array('controller' => 'showspage', 'action' => 'home')); 
     } 
    } 
    $this->Session->setFlash('You aren't legged-in!'); 
    $this->redirect(array('controller' => 'showspage', 'action' => 'home')); 
} 

Все сведения о пользователе в сессии, и вы можете найти его с AuthComponent:

Es: AuthComponent :: пользователя ('имя пользователя');

+0

по какой-либо причине AuthComponent :: user ('email') & AuthComponent :: user ('password') возвращает null. – gong

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