Symfony - поле CSRF на странице входа в систему остается пустым после истечения времени сеанса, и отправляется несвязанная форма - PullRequest
1 голос
/ 08 апреля 2011

Я использую Symfony 1.4 с sfGuardPlugin.Если у меня истекает время сеанса, пока я сижу на странице в приложении, и я пытаюсь отправить форму, которая находится на этой странице, я буду перенаправлен на страницу входа (это хорошо, потому что время сеанса истекло),Но он считает, что форма входа уже отправлена, и что я не прошел проверку - имя пользователя, пароль и CSRF все отсутствуют и требуются.

Почему он считает, что я уже отправил форму входаи почему CSRF пуст?

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

Я не совсем уверен, где искать.Мне кажется, моя конфигурация sfGuardPlugin довольно стандартная.Страница входа и защита CSRF обычно работают нормально.

Используемое мною действие просто делает $this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));

1 Ответ

1 голос
/ 28 апреля 2011

есть ошибка, которую вы можете совершить

  1. , обрабатывая форму как get, так и post.добавьте if ($ request-> isMethod ('post')) для обработки отправки формы только по почте.
  2. не отображало скрытое поле в шаблоне.поле csrf скрыто.использование echo $ form для визуализации всей формы или $ form-> renderHiddenFields ()
...