2012-06-05 16 views
8

FOSUserBundle'ı başarıyla yapılandırdık; giriş, kayıt, şifre sıfırlama, vb, hepsi gayet iyi çalışıyor.Symfony FOSUserBundle - layout şablonunda oturum açma formunu ekle

Şimdi giriş formunu genel site düzenimize dahil etmek istiyoruz, özellikle de bu formu düzen başlığının en sağdaki bölümüne yerleştiriyoruz. Sadece kullanıcı adı ve şifre alanlarıyla uğraşırsak bunu yapmak kolay olurdu. Ancak biz FOSUserBundle hizmeti tarafından oluşturulan CSRF kodu almanız anlamaya görünüyor olamaz: Ben başka türlü yapamam ince ancak görünüşe uzantısı çalışır yukarıda içinde Twig uzantısı arama çalıştı

$this->container->get('form.csrf_provider')->generateCsrfToken('authenticate'); 

Konteynere uygun şekilde başvurunuz.

Dünya çapında FOSUserBundle CSRF belirtecini elde etmenin kolay bir yolu var mı?

Teşekkürler! Jason

Sen denetleyicileri

sonra

ve sadece

Ayrıca aşağıdaki eklemeniz gerekir
<input type="hidden" name="_csrf_token" value="{% render('YourBundle:YourController:getToken') %}" /> 

yoluyla forma gömün birinde böyle bir işlevi tanımlayabilirsiniz

cevap

6

kontrolörünüzün top:

use Symfony\Component\HttpFoundation\Response; 
34

Symfony'nin 2.3:

olası bir çözüm böyle bir Twig küresel değişken olarak csrf sağlayıcı tanımlamak olacaktır:

twig: 
    globals: 
     fos_csrf_provider: "@form.csrf_provider" 

Ve sonra düzeninde böyle diyoruz:

<input type="hidden" name="_csrf_token" value="{{ fos_csrf_provider.generateCsrfToken('authenticate') }}" /> 

Yani herhangi bir kontrol cihazını aramanıza gerek yok.

Symfony'nin 2.4 ve üstü:

twig: 
    globals: 
     fos_csrf_provider: "@security.csrf.token_manager" 

ve:

<input type="hidden" name="_csrf_token" value="{{ fos_csrf_provider.refreshToken('authenticate') }}" /> 
+1

günümü kurtardı! çok teşekkür ederim! – fanjabi

+3

Bu, en iyi cevap olarak işaretlenmeli - diğerinden daha temiz ve daha kolay. –

+0

Bu en iyi ve en temiz çözümdür. Şablonlardaki Render denetleyici çok fazla kaynak tüketir: Bu çözüm en iyi ve en temiz olanıdır. – Aerendir

İlgili konular