sfGuard で保護された POST データを取得するアクションがあります。これは、ユーザーがログインしていない場合、POST データがログイン フォームに送信されることを意味します。通常、これは問題ではありません。ユーザーは引き続きログインし、データを再度送信する必要があります。
残念ながら、ログイン フォームは、フォーム自体と共に送信されたかのように POST データを使用しているようです。これは、必要なユーザー名とパスワードのフィールドが欠落していると不平を言っており、CSRF トークンが欠落していると不平を言っていることを意味します。この最後の問題は、フォームを送信した後も解消されず、ユーザーがログインできないことを意味します。
ログインしていないユーザーにはフォームが表示されませんが、ユーザーがフォームを開いたままログアウトできる可能性があります。そのため、インターフェイスを水密でエラーのない状態に保つために質問しています。
これは sfGuard の欠点ですか、回避できますか、それとも何か間違ったことをしていますか?
明確にするために、ルートは次のようになります。
add_subgroup:
url: /group/:id/add
class: sfPropelRoute
options:
model: Group
type: object
param: { module: subgroups, action: create }
requirements:
group_id: \d+
sf_method: [post]
リクエストを送信するために使用されるフォームは次のとおりです。
<form action="<?php echo url_for('add_subgroup', $group) ?>" method="post">
<input type="hidden" name="group_id" value="<?php echo $group->getId() ?>" />
<input type="text" name="subgroup_id" />
<input type="submit" class="button" value="Add" />
</form>