Я попытался настроить страницу входа в систему, но когда я пытаюсь войти в систему, даже с неправильным именем пользователя/паролем, переадресация торта на страницу входа в систему (функция выхода из системы перенаправляется правильно) , Даже если я подключу неправильную информацию, я вообще не вижу ошибок, я не понимаю. Вот мой код контроллера:страница входа в систему cakephp никуда не годится
class UsersController extends AppController {
public $name='Users';
public $layout='pagelayout';
public $uses=array('User');
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('add', 'logout', 'overview');
}
public function login() {
$this->set('title', 'Log in to your Gulf Shores 4 Less account');
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
}
}
}
и вот моя модель:
<?php
App::uses('AuthComponent', 'Controller/Component');
class User extends AppModel {
public $name='User';
public $hasMany=array('Unit', 'Complex', 'Coupon', 'Location', 'Image', 'Charter', 'Course', 'Nightclub', 'Store');
public function beforeSave() {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
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', 'advertiser')),
'message' => 'Please enter a valid role',
'allowEmpty' => false
)
)
);
}
?>
Вот код из AppController:
<?php
class AppController extends Controller {
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'users', 'action' => 'overview'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'index')
)
);
function beforeFilter() {
$this->Auth->allow('login','index', 'view', 'condos', 'houses', 'hotels_and_motels', 'print_all_coupons', 'print_coupon', 'search', 'golf', 'charters', 'events', 'nightlife', 'shopping', 'visitors_info', 'contact_us');
}
}
?>
и здесь вид код:
<div class="users form">
<?php echo $this->Session->flash('auth'); ?>
<?php echo $this->Form->create('User');?>
<fieldset>
<legend><?php echo __('Please enter your username and password'); ?></legend>
<?php
echo $this->Form->input('username');
echo $this->Form->input('password');
?>
</fieldset>
<?php echo $this->Form->end(__('Login'));?>
</div>
Как вы можете видеть, я довольно много копировал и вставлял то, что было в руководстве Cakephp-2.0 для этого. Единственная разница между моей таблицей db и руководством заключается в том, что мой пароль хранится как хэш MD5 в моей таблице пользователей. я не могу понять, где это сошло с рельсов.
** Обновление ** Я изменил функцию мой логин(), что теперь дает мне сообщение об ошибке, когда информация для входа неверна. Я думаю, проблема в том, что, поскольку мои пароли хранятся в db с хешами MD5, он не проверяет правильный пароль. Как я могу сказать Cake, чтобы использовать хэш-проверку MD5? – huzzah
** Обновление ** Снова. Я читал, что хэш-хэш по умолчанию - sha1, поэтому я сменил один из своих паролей на хэш-код sha1, и все же я остаюсь на странице входа (он все еще говорит мне неправильное имя пользователя/пароль) – huzzah