Компонент CakePHP Auth Не регистрируется при использовании $ this-> Auth-> login ();

Я новичок в cakePHP, и я прочитал их документацию, и я слежу за их простым примером проверки подлинности. Я также искал по всему миру (включая ответы на этом сайте) ответ на мою проблему.

Я использую cakePHP 2.0, а функция входа в систему UserController выглядит так:

function login() { if ($this->request->is('post')) { if ($this->Auth->login(/*$this->request->data*/)) { $this->redirect($this->Auth->redirect()); }else { $this->Session->setFlash(__('Invalid username or password, try again')); } } } 

Мой AppController выглядит так:

 public $components = array( 'Session', 'Auth' => array( 'loginRedirect' => array('controller' => 'pages', 'action' => 'display'), 'logoutRedirect' => array('controller' => 'pages', 'action' => 'display') ) ); public function beforeFilter() { $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); } 

Моя модель пользователя:

 class User extends AppModel { public $name = "User"; } 

И форма входа:

 echo $this->Session->flash('auth'); echo $this->Form->create('User', array('action' => 'login')); echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->end('Login'); 

Проблема заключается в том, что он не регистрирует пользователя. Когда $ this-> Auth-> login () вызывается без $ this-> request-> данных в качестве параметра, ничего не записывается в сеанс, а страница просто обновляется. Однако когда вы предоставляете данные $ this-> request->, они работают, учетные данные записываются на сеанс, и я перенаправлен правильно. Однако я заметил, что вы можете «войти» в кого-нибудь, у которого есть $ this-> Auth-> login ($ this-> request-> data), даже если они не присутствуют в базе данных. В дополнение к этому, если я ввожу неправильные учетные данные, ничего не происходит, никакие флэш-сообщения не отображаются.

Я не пытаюсь сделать что-то особенное, все, что я хочу, это возможность входа пользователя в систему. У меня есть простая таблица пользователей с полями имени пользователя и пароля, и я следовал их примеру и читал их документацию, но все равно ничего не пробовал работал.

Прошу прощения, если я не предоставил всю информацию, необходимую для предоставления ответа. Любая помощь приветствуется.

У меня был такой же опыт. То, что со мной произошло, в какой-то момент, я смог успешно войти в систему, используя некоторые имя пользователя и пароль, но у меня никогда не было кода в представлении, который показал мне, что я вошел в систему. Я также был очень смущен тем, что когда я впоследствии зашел в систему со случайными именами пользователей и паролями, он по-прежнему дал мне успешное уведомление о входе в систему.

Я думаю, что произошло, если вы находитесь в состоянии входа в систему, то $this->Auth->login() вернет true независимо от того, какое имя пользователя и пароль вы вводите. Решение, вероятно, $this->Auth->logout() бы в том, чтобы каким-то образом вызвать $this->Auth->logout() в вашей программе или $this->Auth->logout() ваши файлы cookie, чтобы программа не указала, что вы больше входите в систему. Затем $this->Auth->login() снова будет работать как обычно.

где вы определили двигатель для использования? вероятно, та же проблема, что и http://ask.cakephp.org/questions/view/unable_to_login, которая была решена при установке двигателя / адаптера, как описано в документации.