Я новичок в CakePhp framework и следил за учебником блога. Все прошло гладко до части аутентификации.CakePhp 3.0 не может войти
Следующие две строки были проблемы:
<?= $this->Form->input('Usuario') ?>
<?= $this->Form->input('Contraseña') ?>
Правильные линии:
<?= $this->Form->input('username') ?>
<?= $this->Form->input('password') ?>
Это мой метод Войти с UsersControllers.php, отладочная линия всегда возвращает ложь.
public function login()
{
if ($this->request->is('post')) {
debug($this->Auth->identify());
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error(__('Usuario o contraseña inválida, intente nuevamente'));
}
}
Это мой пользовательский класс я должен был изменить строку $ _accessible охраняемого = [ '*' => верно]; как показано в учебнике, иначе пользователи не будут сохранены.
class User extends Entity
{
// Make all fields mass assignable for now.
protected $_accessible = ['username' => true,'password'=>true,'role'=>true,'created'=>true,'modified'=>true];
// ...
protected function _setPassword($password)
{
return (new DefaultPasswordHasher)->hash($password);
}
// ...
}
Это мой login.ctp
<div class="users form">
<?= $this->Flash->render('auth') ?>
<?= $this->Form->create() ?>
<fieldset>
<legend><?= __('Ingrese su usuario y contraseña') ?></legend>
<?= $this->Form->input('Usuario') ?>
<?= $this->Form->input('Contraseña') ?>
</fieldset>
<?= $this->Form->button(__('Login')); ?>
<?= $this->Form->end() ?>
</div>
Это мои методы AppController.php:
public function initialize()
{
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'loginRedirect' => [
'controller' => 'Expedientes',
'action' => 'index'
],
'logoutRedirect' => [
'controller' => 'Pages',
'action' => 'display',
'home'
]
]);
}
public function beforeFilter(Event $event)
{
$this->Auth->allow(['index', 'view']);
}
На данный момент я могу добавить пользователей, их пароли хэшируются, но я могу Войдите. Любая помощь будет принята с благодарностью. Спасибо заранее.
Как долго вы занимаетесь паролем? – Salines
Привет, пароль \t varchar (255) \t utf8_general_ci – sms
Задайте себе вопрос: как должен механизм auth знать, что он должен использовать поле 'Usuario' для имени пользователя и' Contraseña' для пароля? Не говоря уже о том, что верхняя часть нарушает правила именования CakePHP! – ndm