CakePHP Auth-> identifier () возвращает false - PullRequest
1 голос
/ 06 июня 2019

Я играю с CakePHP и не могу заставить работать логин.Похоже, что $ this-> Auth-> identif () постоянно возвращает false и не позволяет мне войти в систему.

Я прочитал все предыдущие сообщения, касающиеся моей проблемы, однако ни одно не предоставило мне решение,Пользователи, к которым я пытаюсь войти, так как все они были созданы с использованием хеш-пароля для торта, который я проверял, были сохранены в базе данных.Я проверил длину поля пароля в базе данных, которая установлена ​​на varchar (255), я проверил, что поля Auth => authenticate => Form => установлены на правильные значения (поля login.ctp также правильны).Я также попытался изменить $ this-> Form-> control () на $ this-> Form-> input (), как кто-то предложил, но безуспешно.

AppController:

 $this->loadComponent('Auth', [
            'loginRedirect' => [
                'controller' => 'Users',
                'action' => 'classes'
            ],
            'logoutRedirect' => [
                'controller' => 'Users',
                'action' => 'index'
            ]
  ]);
$this->loadComponent('Auth', [
                'authenticate' => [
                    'Form' => [
                        'fields' => [
                            'username' => 'email',
                            'password' => 'password'
                        ]
                    ]
                ],
                'loginAction' => [
                    'controller' => 'Users',
                    'action' => 'login'
                ]
        ]);

функция login () в UsersController:

public function login()
    {
        if ($this->request->is('post')) {
            $user = $this->Auth->identify();
            pj($user);
            if ($user) {
                $this->Auth->setUser($user);
                return $this->redirect(['controller' => 'users']);
            }
            $this->Flash->error(__('Invalid username or password, try again'));
        }
    }

login.ctp:

<div class="users form">
<?= $this->Form->create() ?>
    <fieldset>
        <legend><?= __('Please enter your username and password') ?></legend>
        <?= $this->Form->input('email') ?>
        <?= $this->Form->input('password') ?>
    </fieldset>
<?= $this->Form->button(__('Login')); ?>
<?= $this->Form->end() ?>
</div>

РЕДАКТИРОВАТЬ: я забыл добавить, что я могу успешно добавлять пользователей, я просто не могу их войтив.

1 Ответ

0 голосов
/ 06 июня 2019

Вы дважды загружаете AuthComponent в AppController.Вторая загрузка с конфигурацией для полей формы не загружается.

Загрузка компонента один раз с требуемой конфигурацией.

$this->loadComponent('Auth', [
    'authenticate' => [
        'Form' => [
            'fields' => [
                'username' => 'email',
                'password' => 'password'
            ]
        ]
    ],
    'loginRedirect' => [
        'controller' => 'Users',
        'action' => 'classes'
    ],
    'logoutRedirect' => [
        'controller' => 'Users',
        'action' => 'index'
    ],
    'loginAction' => [
        'controller' => 'Users',
        'action' => 'login'
    ]
]);
...