Symfony2/SonataAdmin:尝试更新记录时出现CSRF错误
问题描述:
使用mongodb odm处理symfony2项目时,尝试设置sonata-admin。Symfony2/SonataAdmin:尝试更新记录时出现CSRF错误
我能:
- 设置奏鸣曲上2种ODM文件
- 列表
但是,当我试图更新记录,我有一个当前的问题CSRF。 我试过这两种记录。
An error has occurred during update of item "AppBundle\Document\Domain:0000000013e9983500007fbae117c6a0".
The CSRF token is invalid. Please try to resubmit the form.
看来CSRF标记存在于源代码:
<input type="hidden" id="s57a195b9a533f__token" name="s57a195b9a533f[_token]" class=" form-control" value="W-pG62dT7hn6mHUu15bQQ4ChU0P55w9pmXsfP7HDnQE" />
我使用Apache
。重写模块已启用。
这里是我的设置:
索纳塔捆绑
[email protected]:/var/www/publishr$ php composer.phar show sonata-project/*
sonata-project/admin-bundle 3.x-dev 7386ec0 The missing Symfony Admin Generator
sonata-project/block-bundle 3.1.1 Symfony SonataBlockBundle
sonata-project/cache 1.0.7 Cache library
sonata-project/core-bundle 3.0.3 Symfony SonataCoreBundle
sonata-project/doctrine-mongodb-admin-bundle 3.x-dev 1157efc Symfony Sonata/Integrate Doctrine MongoDB ODM into the Son...
sonata-project/exporter 1.6.0 Lightweight Exporter library
Symfony的捆绑
[email protected]:/var/www/publishr$ php composer.phar show symfony/*
symfony/assetic-bundle v2.8.0 Integrates Assetic into Symfony2
symfony/monolog-bundle 2.11.1 Symfony MonologBundle
symfony/phpunit-bridge v3.1.3 Symfony PHPUnit Bridge
symfony/polyfill-apcu v1.2.0 Symfony polyfill backporting apcu_* functions to lower PHP versions
symfony/polyfill-intl-icu v1.2.0 Symfony polyfill for intl's ICU-related data and classes
symfony/polyfill-mbstring v1.2.0 Symfony polyfill for the Mbstring extension
symfony/polyfill-php56 v1.2.0 Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions
symfony/polyfill-php70 v1.2.0 Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions
symfony/polyfill-util v1.2.0 Symfony utilities for portability of PHP codes
symfony/security-acl v3.0.0 Symfony Security Component - ACL (Access Control List)
symfony/swiftmailer-bundle v2.3.11 Symfony SwiftmailerBundle
symfony/symfony v3.1.3 The Symfony PHP framework
PHP版本
[email protected]:/var/www/publishr$ php -v
PHP 5.6.23-1+deprecated+dontuse+deb.sury.org~trusty+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
答
我找到了解决方案。 它与我的流浪设置有关。
现在可以解决我的问题。这似乎是在会话保存路径上写入权限的问题。如果我更改配置为使用默认的会话保存路径如下:
# app/config/config.yml
framework:
session:
save_path: null
然后/var/lib/php/session
代替/var/www/myproject/app/cache/dev/sessions
。
然后它的工作!
+0
尽管如此,您应该考虑正确设置权限。如果你不能写入应用程序缓存,你将有其他问题。请参阅http://symfony.com/doc/current/setup/file_permissions.html – greg0ire
如果我在FormTypeCsrfExtension.php中禁用了“defaultEnabled”为false。记录被更新。 –
是的,但你不再对CSRF提供保护 – greg0ire
你应该尝试在'vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Csrf/EventListener/CsrfValidationListener.php'中一步步调试。 – greg0ire