Security
ログインしようとすると、コンポーネントによってリクエストがブラックホール化されます。どうすれば正しく動作させることができますか?
シンプルなログインフォームがあります
<div class="container container-login">
<h2><?php echo __('Login'); ?></h2>
<div class="wrap-form-signin">
<?php
echo $this->Form->create('User', array('action' => 'login', 'class' => 'form-signin'));
echo $this->Form->input('username', array('label' => '', 'placeholder' => __('Email')));
echo $this->Form->input('password', array('label' => '', 'placeholder' => __('Password')));
echo $this->Form->submit(__('Login'));
echo $this->Form->end();
?>
</div>
</div>
コントローラーのアクションは次のようになります。
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
} else {
$this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
}
}
}
そして、Security
コンポーネントはに含まれていますAppController
public $components = array('Security', ... );
error.log には次のように表示されます。
2013-03-29 13:40:58 Error: [BadRequestException] The request has been black-holed
Request URL: /users/login
Stack Trace:
#0 C:\wamp\www\cdx\lib\Cake\Controller\Component\SecurityComponent.php(234): SecurityComponent->blackHole(Object(UsersController), 'auth')
#1 [internal function]: SecurityComponent->startup(Object(UsersController))
#2 C:\wamp\www\cdx\lib\Cake\Utility\ObjectCollection.php(131): call_user_func_array(Array, Array)
#3 [internal function]: ObjectCollection->trigger(Object(CakeEvent))
#4 C:\wamp\www\cdx\lib\Cake\Event\CakeEventManager.php(247): call_user_func(Array, Object(CakeEvent))
#5 C:\wamp\www\cdx\lib\Cake\Controller\Controller.php(670): CakeEventManager->dispatch(Object(CakeEvent))
#6 C:\wamp\www\cdx\lib\Cake\Routing\Dispatcher.php(183): Controller->startupProcess()
#7 C:\wamp\www\cdx\lib\Cake\Routing\Dispatcher.php(161): Dispatcher->_invoke(Object(UsersController), Object(CakeRequest), Object(CakeResponse))
#8 C:\wamp\www\cdx\app\webroot\index.php(92): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#9 {main}
リクエストがブラック ホールに送られている原因を特定するにはどうすればよいですか?
カスタム ブラックホール ハンドラーを使用しようとしたとき、エラーの種類はauth
. しかし、それは私が得ることができるすべての情報です
CakePHP の私のバージョンは 2.3.1 です
Security
編集:ログインはコンポーネントなしでうまく機能します。に追加するとAppController
、ログインが機能しなくなります。
data[_Token][key]
EDIT2:フォームにフィールドがありません
EDIT3 THE SOLLUTION: 私のチームの誰かが HTMLHelper クラスをオーバーライドし、_tags 配列の「hiddenblock」を見逃したため、_Token フィールドが欠落しました。詳細については、私の回答と thaJeztah の回答とその下のコメントを参照してください。