Я новичок в CakePHP. Я пытаюсь the Cake cookbook tutorial of simple authentication с CakePHP 2.4.1.
Я всегда получаю «Неверное имя пользователя или пароль, повторите попытку», хотя я набрал правильное имя пользователя и пароль.CakePHP простая проверка подлинности не работает
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirect());
}
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
Согласно the AuthComponent API, если параметр Auth->login()
пуст или не указан, то запрос будет использоваться для идентификации пользователя. Отладочный вывод запроса показывает
SELECT `User`.`id`, `User`.`username`, `User`.`password`, `User`.`role`, `User`.`created`, `User`.`modified`
FROM `cake_dvdcatalog`.`users` AS `User` WHERE `User`.`username` = 'admin' LIMIT 1
Вот моя модель Пользователь:
// app/Model/User.php
App::uses('AuthComponent', 'Controller/Component');
class User extends AppModel {
public $validate = array(
'username' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A username is required'
)
),
'password' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A password is required'
)
),
'role' => array(
'valid' => array(
'rule' => array('inList', array('admin', 'author')),
'message' => 'Please enter a valid role',
'allowEmpty' => false
)
)
);
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;
}
}
Можете ли вы разместить свой код для своей модели пользователя? – Andrew
@ Андрей, конечно. Я отредактировал мой вопрос. – Sithu
Попробуйте отладить $ this-> Auth-> login(). Зашифрованный пароль должен быть таким же, как в базе данных. – Dezigo