2016-02-04 8 views
6

У меня возникает эта странная проблема со свежей установкой Symfony 3.0.1. Я создал новый CRUD-контроллер с формой PostType, который содержит URL-адрес и заголовок. Ничего особенного.Symfony 3.0.1 токен CSRF присутствует, но недействителен

Форма представляется как ожидалось. Он содержит как поле моего поля, так и поле заголовка. Внутри формы также отображается скрытое поле ввода _token.

При подаче этой формы, я получаю все время, следующее сообщение об ошибке:

The CSRF token is invalid. Please try to resubmit the form.

Таким образом, маркер добавляется к форме, она содержит значение, у меня есть постоянное значение куки PHP сессии, это просто что этот токен недействителен.

Я искал другие ответы, но подобные вопросы вызваны отсутствием входа _token.

Эта проблема также встречается в Symfony 3.0.2/3.0.3.

+0

Нет Symfony 3.1. –

+0

3.1 является dev-мастером. Посмотрите его здесь: https://packagist.org/packages/symfony/symfony#dev-master – yellowmen

+0

добавить код, который создает и обрабатывает форму –

ответ

13

В моем случае это было то, что папка var/sessions/ не была доступна для записи. По умолчанию используется var/session, который устанавливается в config.yml.

session: 
    # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id 
    handler_id: session.handler.native_file 
    save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" 

Удостоверяются, что у вас есть var/ folders доступный для записи.

chmod 775 -R var/sessions/ 
chmod 775 -R var/log/ 
chmod 775 -R var/cache/ 
+0

Это действительно было моя проблема. Спасибо! – shrty

+0

Он сделал это и для меня. Спасибо! – ptocquin

+0

Вы должны принять ответ, так что ваш вопрос не появится нерешенным. – Veve

0

Это кажется ошибка в симфони версии> 3,0, < 3.0.3.

Как отметил @yellowmen, изменение framework.session.save_path в config.yml устраняет проблему.

+0

У меня есть 3.1.3 и это происходит со мной, ни одно из этих решений не работало. Это проблема с использованием 'server: run'? –

0

Ошибка также присутствует в 3.0.4. save_path: ~ работал для меня.

3

я просто была аналогичная проблема с Symfony 3,2

The CSRF token is invalid. Please try to resubmit the form.

После нескольких часов, мы наконец-то нашли этот вопрос был связан с session.cookie_secure (HTTPS):

Наша производственная среда использует протокол HTTPS, таким образом силы файлы cookie, которые должны быть защищены через https. В среде dev используется http. После перемещения dev с HTTP на HTTPS проблема была исправлена.

0

Я использую Symfony 3.2.1 и работает на одной машине, но не на другой. Не знаю, почему.

@Shrihari его ответ привел меня к следующему решению.

В моем проекте также есть cookie_secure: true. Я обновил config_dev.yml и добавил cookie_secure: false к файлу.

framework: 
    session: 
     cookie_secure: false 

Это сработало для меня.

Смежные вопросы