2013-04-09 16 views
11

Symfony2'de kimlik doğrulama başarısından sonra nasıl bir şey yapılacağına dair bir bilgi arıyorum. Eski şifreyi kullanarak başarılı bir kimlik doğrulamasından sonra bcrypt kullanmak için kullanıcı şifresini yeniden yazmak istiyorum. Hala geçerli bir düz şifreye sahip olduğumda bunu yapmam gerekiyor, bu yüzden kimlik bilgileri kontrol edildikten ve yönlendirmeden önce olmalıdır.Symfony2'den hemen sonra başarıya giriş yapın ve yönlendirme yapmadan önce bir şey yapın?

Bunu nasıl başaracağınız hakkında ipuçları var mı?

Symfony'de etkinlik dağıtıcı hakkında bir şey buldum, ancak başarılı kimlik doğrulamasından sonra herhangi bir olay olup olmadığını bulamıyorum .

Yanlış bir şekilde yapmaya çalıştığımda ve daha iyi bir yaklaşım önerdiğimde lütfen beni düzeltin. Ben olay daha yeni auth başarıdan sonra, bu security.authentication.success denir ateş bulundu

// DÜZENLEME

Ok. Bu yüzden şimdi bu etkinliğe ekleyebilirim, ancak artık olay kodumda olay dinleyicimi nereye ekleyeceğimi bilmiyorum? load() yöntemindeki /src/Pkr/BlogUserBundle/DependencyInjection/PkrBlogUserExtension.php yönteminde bunu yapmalı mıyım?

cevap

28

Başarılı girişte çalıştırılacak bir oturum açma işleyicisi belirtebilirsiniz. Örneğin

, senin security.yml

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      success_handler: my.security.login_handler 

Şimdi Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface uygulayan sınıf oluşturmak ve başarılı giriş, ihtiyacınız ne olursa olsun yapmak ve size uygun biçimde yönlendirmeyi işleyebilir.

/** 
* 
*/ 
public function onAuthenticationSuccess(Request $request, TokenInterface $token) 
{ 
    // handle it and return a response 
} 

Sonra paket için services.xml bu isimde bir hizmet oluşturmak veya yeni oluşturulan işleyici kullanarak config.yml içinde.

Başlangıçta bu yazının aşağıdaki Bunun nasıl öğrendim:

Büyük

http://www.reecefowell.com/2011/10/26/redirecting-on-loginlogout-in-symfony2-using-loginhandlers/

+0

, kısa bir süre deneyeceğim :) – piotrekkr

+0

Çözümünüz iyi çalışıyor. İlk başta giriş başarı olayına bağlı olay dinleyicisi ile denedim ama sonra benim çözümde bu kadar kolay erişilebilir istek nesnesi yoktu :) Yardım için teşekkürler – piotrekkr

+0

Bunu denediğimde $ request-> headers-> get ('referer') giriş sayfama ayarlandı. İstenilen sayfanın nasıl alınacağıyla ilgili herhangi bir fikir * önce * kullanıcı giriş sayfasına yönlendirildi? – adavea