2016-02-04 325 views
6

我有一個新鮮的Symfony 3.0.1安裝這個奇怪的問題。我使用Form PostType生成了一個新的CRUD控制器,其中包含一個url和一個標題。沒有什麼花哨。Symfony 3.0.1 CSRF令牌存在,但無效

表單按預期呈現。它包含我的網址字段和標題字段。在表單中隱藏的輸入字段_token也被渲染。

當提交這種形式,我得到一切的時候出現以下錯誤:

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

所以令牌被添加到形式,它包含一個值,我有一個恆定的PHP會話cookie的值,它僅僅是這個標記無效。

我已經搜索了其他答案,但類似的問題都是由於缺少_token輸入引起的。

在Symfony 3.0.2/3.0.3中也會出現此問題。

+0

沒有Symfony 3.1。 –

+0

3.1是開發大師。在這裏查看:https://packagist.org/packages/symfony/symfony#dev-master – yellowmen

+0

添加一些代碼,創建並處理表格 –

回答

13

在我的情況下,它是var/sessions/文件夾不可寫。默認值是在config.yml中設置的var/sessions。

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

它似乎是一個symfony版本> 3.0中的bug,< 3.0.3。

正如@yellowmen指出的那樣,更改framework.session.save_path中的可以解決問題。

+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,從而力cookies通過https保護。開發環境使用http。將開發人員從HTTP移至HTTPS後,問題得到解決。

0

我正在使用Symfony 3.2.1,它在一臺機器上工作,但沒有在其他機器上工作。不知道爲什麼。

@Shrihari他的回答讓我想到了以下解決方案。

我的項目也有cookie_secure: true。 我更新了config_dev.yml並將cookie_secure: false添加到文件中。

framework: 
    session: 
     cookie_secure: false 

這對我有效。