Symfony 3.0.1 CSRF令牌存在但无效

joo*_*iel 10 php forms symfony

我有一个新的Symfony 3.0.1安装这个奇怪的问题.我生成了一个带有Form PostType的新CRUD控制器,它包含一个url和一个标题.没有什么花哨.

表单按预期呈现.它包含我的url字段和title字段.在表单内部,还会呈现隐藏的输入字段_token.

提交此表单时,我总是得到以下错误:

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

所以令牌被添加到表单中,它包含一个值,我有一个常量的PHP会话cookie值,只是这个令牌无效.

我已经搜索了其他答案,但类似的问题都是由于缺少_token输入引起的.

Symfony 3.0.2/3.0.3中也会出现此问题.

Ped*_*ado 14

在我的情况下,该var/sessions/文件夹是不可写的.默认值为var/sessions,它在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%"
Run Code Online (Sandbox Code Playgroud)

确保你有var/ folders可写.

chmod 775 -R var/sessions/
chmod 775 -R var/log/
chmod 775 -R var/cache/
Run Code Online (Sandbox Code Playgroud)


小智 6

我刚与Symfony 3.2有类似的问题

CSRF令牌无效.请尝试重新提交表单.

几小时后,我们终于发现问题与session.cookie_secure(https)有关:

我们的生产环境使用https,因此强制通过https保护cookie.开发环境使用http.将dev从HTTP移动到HTTPS后,问题得到了解决.