Проверка Zend_Form csrf для запросов ajax - PullRequest
4 голосов
/ 15 августа 2011

Вот как я добавляю csrf в форму

$this->addElement('hash', 'csrf', array('ignore' => false));

Когда это происходит, сеанс создается. Затем, когда пользователь отправляет запрос ajax, значения в запросе проверяются путем создания экземпляра формы, и форма всегда действительна для первого запроса ajax с начала начальный запрос, который создал вывод html,

Когда запрос ajax отправляется во второй раз, происходит что-то другое,

Этот экземпляр формы имеет значение csrf, отличное от первоначально созданного, и когда мой код завершен, первоначально созданный сеанс также уничтожается, поэтому не существует сеанса для проверки полученных значений, и, следовательно, форма не проверена и возникает следующая ошибка.

No token was provided to match against

Есть идеи, при каком событии значения csrf формы автоматически сохраняются в сеансе?

Ответы [ 2 ]

5 голосов
/ 15 августа 2011

Значение хеша генерируется во время рендеринга и становится недействительным после каждого запроса.

Если вы хотите продолжить использовать Zend_Form_Element_Hash в вашей форме AJAX, где форма может отправляться несколько раз, ваш ответ AJAX должен включатьновое хеш-значение.Получив ответ, вы должны обновить данные формы.

0 голосов
/ 08 ноября 2013

Существует решение без какого-либо рендеринга в представлении: Totaly Ajax! Как использовать Zend Framework Form Hash (токен) с AJAX

...