Как решить, что токен CSRF недействителен - PullRequest
0 голосов
/ 05 июня 2018

Ошибка

Недопустимый токен CSRF.Пожалуйста, попробуйте повторно отправить форму.

Эта ошибка иногда появляется в формах symfony2, но после успешного обновления формы сохраняется.

Эта ошибка не часто возникает при сохранении формы.

Я пробовал в каждом браузере, проблема одинакова.

При обновлении маркера страницы, получить обновление в скрытых полях ввода, но ошибка остается той же.

Я гуглил и нашел некоторыеПолезная статья, в которой предлагается

{{form_rest(form)}}

использовать перед закрытием тега формы.

Вот мой код

Код веточки

<div id="{{ formID }}_container" class="main">
    <div class="page">
        <div id="{{ formID }}_output"></div>

        {% include 'Bundle:Form:required_msg.html.twig' %}
        {{form_start(form, { 'attr' : { 'id': formID } })}}

        <div style="display: none">
            {{form_rest(form)}}
        </div>

        {{form_end(form)}}
    </div>
</div>

У меня естьэто скрытое поле:

<input id="form_id" name="details_form[_token]"  value="somevalue" type="hidden">

Это мои данные формы:

details_form[_token]    value
details_form[age]   
details_form[gender]    F

Это ответ на запрос:

{"success":false,"msg":"Form is invalid.","errors":[{"name":"[0]","message":"The CSRF token is invalid. Please try to resubmit the form."}]

Некоторые другие ответы, которые я виделпри переполнении стека ( токен CSRF недействителен. Пожалуйста, попробуйте еще раз отправить форму ), чтобы сделать это:

public function setDefaultOptions(OptionsResolverInterface $resolver) {
    $resolver->setDefaults(array(
        'options' => array(),
        csrf_protection'   => false
    ));
}

Но я не должен устанавливать флаг csrf_protectionдо false.Кто-нибудь может предложить лучший способ решить эту проблему?

...