2011-12-06 15 views
9

Kullanıcının kimlik bilgilerinin doğru olup olmadığını kontrol etmeden önce bazı kodları çalıştırmam gerekiyor. Şu anda bunu, kernel.request olayında tetiklenen özel bir olay dinleyicisi ile gerçekleştiriyorum ve istenen URL'nin security.yml'ın check_path ayarıyla eşleşip eşleşmediğini kontrol ediyorum. Ancak bu, her istekte çalıştığı için verimsizdir. onSecurityInteractiveLogin etkinliğinin farkındayım, ancak başarılı bir giriş denemesinden sonra yangınların olduğuna inanıyorum. Ön giriş etkinliğinin olup olmadığını veya özel bir etkinliği kendim gönderebileceğimi bilen var mı?Herhangi bir "pre login" olayı veya benzeri bir şey var mı?

cevap

12

Yani, 'resmi' ön giriş olayı yok. Ama şükür ki Symfony2 çok genişletilebileceğinden birini ayarlamak zor değil. Hile, kimlik doğrulama işlemek için kendi hizmetinizi kullanmaktır. Bir giriş formunu kullanırken

Symfony'nin bu sınıfı kullanır:

Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener

sen (aslen Symfony\Bundle\SecurityBundle\Resources\config\security_listeners.xml tanımlanan) security.authentication.listener.form.class parametresini Eğer UsernamePasswordFormAuthenticationListener uzanan özel bir dinleyici kullanabilirsiniz geçersiz kılarsanız.

Tek yapmanız gereken özel olayı göndermek için attemptAuthentication() yöntemini geçersiz kılmaktır.

(Aslında siz de __construct() bir sınıf özelliği olarak olay memuru saklamak gerekir)

Bu yöntem, diğer kimlik doğrulama yöntemleri ile çalışması gerekir

- Uygun dinleyici değiştirmek yapmanız gereken istediğiniz tüm (yani BasicAuthenticationListener, X509AuthenticationListener, vb.)

+0

Buradan nereden başlayacağınızı bilmediğimden bir örnek verebilir misiniz? – pregmatch

+0

Bu öneriyi şu adımlarla uygularım: 1) bir "security.authentication.listener.form.class: App \ BoardBundle \ Listener \ MyAuthListener" satırını config.yml dosyasına ekleyin, bölümler bölüm 2) aslında bu sınıf sınıfını oluşturun MyAuthListener extends Içinde UsernamePasswordFormAuthenticationListener {3), korumalı işlev girişimi oluşturunAuthentication (İstek isteğinde bulunun) – user1312695

İlgili konular