Отправка запроса POST на защищенное действие

У меня есть действие, которое принимает данные POST, защищенные sfGuard. Это означает, что если пользователь не вошел в систему, данные 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>
9
задан Druckles 23 August 2011 в 12:01
поделиться