1

私はsfGuardPluginでSymfony 1.4を使用しています。アプリ内のページに座っているときにセッションがタイムアウトし、そのページにあるフォームを送信しようとすると、ログイン ページにリダイレクトされます (セッションがタイムアウトしたため、これは良いことです)。 . しかし、ログイン フォームは既に送信されており、検証に失敗したと見なされます。ユーザー名、パスワード、および CSRF がすべて欠落しており、必要です。

ログイン フォームを送信済みであると見なされるのはなぜですか? CSRF が空なのはなぜですか?

ログインページにいて、非表示のCSRFフィールドが空であるため、ユーザーとして完全に行き詰まってしまいます。ユーザー名とパスワードを入力しても、CSRF が必要なため検証に合格できません。

どこを見ればいいのかよくわかりません。私の sfGuardPlugin 設定はかなり標準的だと思います。ログイン ページと CSRF 保護は、通常は正常に機能します。

私が使用しているアクションは $this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));

4

1 に答える 1

1

あなたが犯すかもしれないいくつかの間違いがあります

  1. get と post の両方でフォームを処理します。if($request->isMethod('post')) を追加して、投稿によるフォーム送信のみを処理します。
  2. テンプレートの非表示フィールドをレンダリングしませんでした。csrf フィールドは非表示です。echo $form を使用してフォーム全体をレンダリングするか、 $form->renderHiddenFields()
于 2011-04-28T13:16:45.020 に答える