У меня есть небольшая проблема, касающаяся безопасности CSRF и формы входа.Форма работает следующим образом:
В основном макете помощник вида создает форму входа в систему и позже также отображает пользовательское меню, когда пользователь прошел аутентификацию.
// User menu viewhelper
public function authentication()
{
// Check if user is authenticated or not
$auth = Zend_Auth::getInstance();
if(!$auth->hasIdentity())
{
$form = new Application_Form_Login();
$form->setAction($this->_view->url(array('action' => 'login'), 'ucp', true));
return $form;
}
else
{
// return user specific menu
}
}
Формаотправляет сообщения в UcpController, содержащий всю логику панели управления пользователя, такую как вход / выход и отображение специфической информации пользователя.
// loginAction in UcpController
public function loginAction()
{
if(Zend_Auth::getInstance()->hasIdentity())
{
$this->_redirect('/');
return;
}
$request = $this->getRequest();
$form = new Application_Form_Login();
if($request->isPost())
{
if($form->isValid($post = $request->getPost()))
{
// Do authentication stuff here.
}
}
$this->view->form = $form;
}
К сожалению, этот токен CSRF не совпадает, и я не знаю, как решитьЭта проблема.Я что-то здесь упускаю?Должен ли я удалить проверку CSRF все вместе?
// The CSRF protection element as added to the login form
$this->addElement('hash', 'csrf',
array(
'ignore' => true
)
);
Заранее спасибо, ваша помощь очень ценится:)