se si utilizza FOSUserBundle e si desidera disabilitare la protezione CSRF solo nel modulo di accesso, ci sono alcuni passaggi da seguire.
Fase 1) Creare il proprio fascio utente & il file Security Controller
Per eccesso di cavalcare il SecurityController che è costruito in FOSUserBundle, è necessario prima creare il proprio pacchetto utente.
Quindi, creare un file chiamato app/src/{} YourApp /UserBundle/Controller/SecurityController.php Si dovrebbe estendere la classe SecurityController originale, e copiare il metodo loginAction
use FOS\UserBundle\Controller\SecurityController as SecurityControllerOrig;
class SecurityController extends SecurityControllerOrig
{
public function loginAction(Request $request)
{
}
}
All'interno del loginAction metodo, come commento, o rimuovere queste righe:
$csrfToken = $this->container->has('form.csrf_provider')
? $this->container->get('form.csrf_provider')->generateCsrfToken('authenticate')
: null;
quindi assicurarsi che nulla è passato a vedere per il token CSRF:
return $this->renderLogin(array(
'last_username' => $lastUsername,
'error' => $error,
'csrf_token' => false,
));
Punto 2) Disattivare CSRF il check-in del firewall di Symfony (security.yml)
Assicurarsi di commentare la "csrf_provider:" esistente linea nella sicurezza.yml:
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
#csrf_provider: form.csrf_provider
Fase 3) Ignorare il percorso per il controllore di sicurezza di FOSUserBundle (routing.yml)
In routing.yml, commentare queste righe:
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
options:
expose: true
aggiungere queste righe al di sotto della righe commentate:
Nota 1: ho solo chiesto di utilizzare il metodo loginAction da il tuo SecurityController personalizzato. Gli altri due metodi vanno alla classe genitore (non è sicuro se faccia la differenza).
Nota 2: è necessaria la parte "expose: true"! Altrimenti, si otterrà un errore JavaScript dal bund di instradamento di fos js.
Questo dovrebbe farlo!
Perché vuoi farlo? – j0k
Poiché il mio cliente desidera che il modulo di accesso venga convalidato, indipendentemente da quanto tempo l'utente è rimasto nella pagina di accesso. Inoltre, personalmente non penso che una protezione CSRF sia necessaria per questo particolare sito web. –