2015-02-06 2 views
0

Я новичок в CakePHP, и у меня проблема, и я не знаю, является ли это ошибкой. Я могу войти только после регистрации пользователя, если я сделаю выход из системы и попытаюсь снова войти в систему, это не сработает, это говорит о том, что мое имя пользователя или пароль неверны :(и это правильно, и я уверен, что данные находятся в . БД это очень странно, и из-за этого я всегда должен зарегистрировать нового пользователя для доступа к моей системе Мой код ниже:.Ошибка входа (или нет) в cakephp

AppController:

class AppController extends Controller { 
    public $components = array(
     'Session', 
     'Auth' => array(
      'loginRedirect' => array('controller' => 'users', 'action' => 'lista_tudo'), 
      'logoutRedirect' => array('controller' => 'users', 'action' => 'lista_tudo'), 
      'authorize' => array('Controller') 
     ) 
    ); 

    function beforeFilter() { 
     $this->Auth->allow('login','add'); 
    } 
    public function isAuthorized($user) { 
     return true; // Admin pode acessar todas actions 
} 
} 

UsersController:

public $uses = array('User','UserGroup','Group'); 
    public $name = "Users"; 
    public $helpers = array('Html','Form','Meu'); 
    public function beforeFilter() { 
     parent::beforeFilter(); 
     $this->Auth->allow('logout','login','add'); 
    } 
    public function login() { 
     var_dump($this->Auth->loggedIn()); 
     if($this->request->is('post')){ 
      if ($this->Auth->login()) { 
       $this->Session->setFlash('Logado com sucesso'); 
       $this->redirect($this->Auth->redirect()); 
      } else { 
       $this->Session->setFlash('Usuário e/ou senha inválido'); 
      } 
     } 
    } 
    public function logout() { 
     $this->redirect($this->Auth->logout()); 
    } 
} 

Войти в систему

<div class="users form"> 
<?php echo $this->Session->flash('auth'); ?> 
<?php echo $this->Form->create('User');?> 
    <fieldset> 
     <legend><?php echo __('Please enter your username and password'); ?></legend> 
     <?php echo $this->Form->input('username'); 
     echo $this->Form->input('password'); 
    ?> 
    </fieldset> 
<?php echo $this->Form->end('Login');?> 
<?php echo $this->Html->link('Logout',array('action'=>'logout')); ?> 
</div> 

пользователя Модель:

public $name='User'; 
     public $hasMany = array(
       'UserGroup'=>array(
         'className'=>'UserGroup' 
        ) 
      ); 
     public $validate = array(
      'username'=>array(
        'rule'=>'isUnique', 
        'message'=>'Usuário já existe' 
       ) 
     ); 
     public function beforeSave($options = array()) { 
     if (isset($this->data[$this->alias]['password'])) { 
     $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); 
     } 
     return true; 
     } 

ответ

1

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

Можете ли вы подтвердить это и вставить свой регистрационный формуляр и код контроллера?

Псевдоним пароля выглядит неправильно в модели, как правило, вы бы использовать что-то вроде:

$this->Form->echo('pwd'); 

В вашей регистрационной форме, а затем:

public function beforeSave($options = array()) { 
    if (isset($this->data[$this->alias]['pwd'])) { 
     $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['pwd']); // Move hashed value from pwd to password 
    } 
    return true; 
} 

В вашей модели.

См. Также эту статью: http://www.dereuromark.de/2011/08/25/working-with-passwords-in-cakephp/

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