FOSUserBundle kullanıyorsanız ve yalnızca oturum açma formunda CSRF korumasını devre dışı bırakmak istiyorsanız, izlenecek birkaç adım vardır.
Adım 1) öncelikle kendi kullanıcı grubu oluşturabilir gerekir, Güvenlik Kontrolör FOSUserBundle yerleşik SecurityController-binmek üzerinde amacıyla
dosyasını kendi kullanıcı paket & oluşturun.
Yani, orijinal SecurityController sınıfını genişletmesi gerekir app/src/{YourApp} /UserBundle/Controller/SecurityController.php adlı bir dosya oluşturun ve LoginAction içinde LoginAction yöntemiyle
use FOS\UserBundle\Controller\SecurityController as SecurityControllerOrig;
class SecurityController extends SecurityControllerOrig
{
public function loginAction(Request $request)
{
}
}
üzerinden kopyalama yöntem, dışarı yorum yapmak ya da bu satırları kaldırın: Sonra
$csrfToken = $this->container->has('form.csrf_provider')
? $this->container->get('form.csrf_provider')->generateCsrfToken('authenticate')
: null;
şey CSRF jetonu görüntülemek geçirilir emin olun:
güvenliğinde hattı:
Adım 2) Symfony'nin firewall kontrol devre dışı bırak CSRF (security.yml)
varolan "csrf_provider" açıklama emin olun.yml:
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
#csrf_provider: form.csrf_provider
Adım 3) FOSUserBundle güvenlik kontrolörü güzergahına geçersiz kılın (routing.yml) routing.yml olarak
, açıklama bu çizgiler:
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
options:
expose: true
altına şu satırları ekleyin yorumlanmış dış hatlar:
#Over-ride the SecurityController of the FOSUserBundle:
fos_user_security_login:
path: /login
defaults: { _controller: YourAppUserBundle:Security:login }
methods: [GET]
options:
expose: true
fos_user_security_check:
path: /login_check
defaults: { _controller: FOSUserBundle:Security:check }
methods: [POST]
options:
expose: true
fos_user_security_logout:
path: /logout
defaults: { _controller: FOSUserBundle:Security:logout }
methods: [GET]
options:
expose: true
Not 1: Sadece loginAction yöntemini kullanmasını istedim senin özel SecurityController. Diğer iki yöntem, ana sınıfa gider (fark yaratıp yaratmadığından emin değil).
Not 2: "Göster: true" bölümüne ihtiyacınız var! Aksi halde, fos js yönlendirme paketinden bir JavaScript hatası alırsınız.
Bunu yapmalı!
Bunu neden yapmak istiyorsunuz? – j0k
İstemcim, kullanıcı giriş sayfasında ne kadar süre oturuyor olursa olsun giriş formunun doğrulanmasını istiyor. Ayrıca, kişisel olarak bu web sitesi için bir CSRF korumasının gerekli olduğunu düşünmüyorum. –