Cakephp 3.7.4 Пароль хеша аутентификации не работает - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь реализовать авторизацию, войти и зарегистрировать cakephp 3.7.4

Я использовал следующий код для метода добавления UsersController

public function add()
{
    $this->viewBuilder()->setLayout('login');
    $user = $this->Users->newEntity();
    if ($this->request->is('post')) {
        $post = $this->request->getData();
        $post['created'] = date('Y-m-d H:i:s');
        $post['modified'] = date('Y-m-d H:i:s');
        $user = $this->Users->patchEntity($user, $post);
        if ($this->Users->save($user)) {
            $this->Flash->success(__('The user has been saved.'));
            return $this->redirect(['action' => 'login']);
        }
        $this->Flash->error(__('Unable to add the user.'));
    }
    $this->set('user', $user);
}

Но он не может сохранить пароль в формате Hash

Я также создал сущность и использовал эту функцию, но она также не помогла мне

 class User extends Entity
 {
   protected $_accessible = [
     'email' => true,
    'password' => true
  ];
 protected $_hidden = [
    'password'
 ];
 protected function _setPassword($password){
  return(new  DefaultPasswordHasher)->hash($password);
 }
}

1 Ответ

0 голосов
/ 17 мая 2019

Я установил свежую установку Cake 3.7.4, запекал таблицу users, контроллер users и таблицу / сущность users. Следующий код для класса пользователя успешно хэшировал пароль перед его записью в базу данных. Пожалуйста, сравните его с вашим кодом.

namespace App\Model\Entity;

use Cake\Auth\DefaultPasswordHasher;
use Cake\ORM\Entity;

class User extends Entity
{
    protected $_accessible = [
        'email' => true,
        'password' => true,
        'modified' => true,
        'created' => true
    ];
    protected $_hidden = [
        'password'
    ];

    protected function _setPassword($password)
    {
        return (new DefaultPasswordHasher())->hash($password);
    }
}
...