2016-02-04 19 views
6

Ho riscontrato questo strano problema con una nuova installazione di Symfony 3.0.1. Ho generato un nuovo controller CRUD con un modulo PostType che contiene un URL e un titolo. Nulla di bello.Symfony 3.0.1 Token CSRF presente ma non valido

Il modulo viene reso come previsto. Contiene sia il mio campo url che il campo del titolo. All'interno del modulo viene anche reso il campo di input nascosto _token.

di questo modulo, sto ottenendo tutto il tempo il seguente errore:

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

Così il token viene aggiunto al modulo, contiene un valore, ho un valore di cookie di sessione PHP costante, è solo che questo token non è valido.

Ho cercato altre risposte ma le domande simili sono tutte causate dall'assenza di un input _token.

Questo problema si verifica anche in Symfony 3.0.2/3.0.3.

+0

Non c'è Symfony 3.1. –

+0

3.1 è lo sviluppatore. Guarda qui: https://packagist.org/packages/symfony/symfony#dev-master – yellowmen

+0

aggiungi del codice che crea ed elabora il modulo –

risposta

13

Nel mio caso era che la cartella var/sessions/ non era scrivibile. L'impostazione predefinita è var/sessions che è impostata su 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%" 

Assicurarsi di avere var/ folders scrivibile.

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

il mio problema, grazie! – shrty

+0

Lo ha fatto anche per me Grazie – ptocquin

+0

Dovresti accettare una risposta in modo che la tua domanda non appaia irrisolta – Veve

0

sembra essere un bug in symfony version> 3.0, < 3.0.3.

Come ha sottolineato @yellowmen, la modifica di framework.session.save_path nel config.yml risolve il problema.

+0

Ho 3.1.3 e questo mi sta succedendo, nessuna di queste soluzioni ha funzionato. È un problema con l'uso di 'server: run'? –

0

Il bug è presente anche in 3.0.4. save_path: ~ ha funzionato per me.

3

Ho appena avuto un problema simile con Symfony 3,2

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

Dopo ore, abbiamo finalmente trovato il problema era legato a session.cookie_secure (https):

nostro ambiente di produzione utilizza https, quindi le forze cookie da proteggere su https. L'ambiente dev utilizzato http. Dopo aver spostato il dev da HTTP a HTTPS, il problema è stato risolto.

0

Sto usando Symfony 3.2.1 e funziona su una macchina ma non sull'altra. Non ho idea del perché.

@Shrihari la sua risposta mi ha portato alla seguente soluzione.

Il mio progetto ha anche cookie_secure: true. Ho aggiornato config_dev.yml e aggiunto cookie_secure: false al file.

framework: 
    session: 
     cookie_secure: false 

Questo ha funzionato per me.