2016-10-13 2 views
0

Доброе утро,Проблема с DefaultPasswordHasher CakePHP

У меня проблема с входом в мое веб-приложение.

Когда я зарегистрировавшись на мое приложение нет ошибок (на мой взгляд):

//Register 
public function register() { 
    $user = $this->Users->newEntity(); 
    if($this->request->is('post')) { 
     $this->request->data('status', '0'); 
     $this->request->data('role', '0'); 
     $user = $this->Users->patchEntity($user, $this->request->data); 
     if($this->Users->save($user)) { 

      $this->Flash->success('You are registered and can login'); 
      return $this->redirect(['action' => 'login']); 
     } else { 
      $this->Flash->error('You are not registered'); 
     } 
    } 
    $this->set(compact('user')); 
    $this->set('_serialize', ['user']); 
} 

Когда пользователь зарегистрирован я наклоняю входа в систему (И я не знаю, почему), но если я войти в систему на другого пользователя, и я меняю пароль для старого пользователя -> старый пользователь может войти в систему.

Я не знаю, где причина.

Логин:

//Login 
public function login() { 
    if($this->request->is('post')) { 
     $user = $this->Auth->identify(); 

     //dump($user); 
     //die(); 
     if($user) { 
      if($user['status'] == '1') { 
       $this->Auth->setUser($user); 
       return $this->redirect(['controller' => 'tasks']); 
      }elseif($user['status'] == '0') { 
       $this->Flash->error('You are not authorized to Log In. Please contact with Admin of Application'); 
      } 
     } else { 
      //Bad Login 
      $this->Flash->error('Incorrect Login or Password'); 
     } 
    } 
} 

Самое интересное, что когда я входе и я написал

dump($user); 
die(); 

Я получаю "ложь" ...

Login.ctp :

<div class="index large-4 medium-4 large-offset-4 medium-offset-4 columns"> 
<div class="panel"> 
    <center><?= $this->HTML->image('small_logo.png'); ?></center> 
    <?= $this->Form->create(); ?> 
     <?= $this->Form->input('email'); ?> 
     <?= $this->Form->input('password'); ?> 
     <center><?= $this->Form->submit('Log In', array('class' => 'button')); ?></center> 
    <?= $this->Form->end(); ?> 
</div> 

Я думаю, что проблема связана с «DefaultHasherPassword», но я не знаю, где проблема, и как ее решить. Пожалуйста помоги.

Его как новый пользователь косяк логин, но когда пользователь модифицируется (пароль изменен) - он может войти

+0

Если вы делите свой код аутентификации appController, тогда вам будет легче помочь – tarikul05

ответ

0

Вы можете быть забыли добавить поле имени пользователя, как электронная почта (не уверена, потому что вы не разделяли. ваш код)

$this->loadComponent('Auth', [ 
    'authenticate' => [ 
     'Form' => [ 
      'fields' => [ 
       'username' => 'email', //email consider as username 
       'password' => 'password' 
      ] 
     ] 
    ], 
    'loginAction' => [ 
     'controller' => 'Users', 
     'action' => 'login' 
    ] 
]); 
Смежные вопросы