Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Symfony2] Historia logowań FOSUserBundle
rcetra
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.12.2011

Ostrzeżenie: (0%)
-----


Witam,
może ktoś robił i podpowie, w któym miejscu się wpiąć w FOSUserBundle, żeby móc zapisywać historię wszystkich logowań.
Sam formularz logowania kieruje do akcji /login_check, ale niestety nie wiem, jak mogę do niej uzyskać dostęp. Sam SecurityController.php daje możliwość nadpisania metody, ale jest w niej tylko
  1. public function checkAction()
  2. {
  3. throw new \RuntimeException('You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.');
  4. }
Chodzi mi o zapisywanie w bazie lub pliku logowań nieudanych i udanych. Jakaś podpowiedź?

--
Znalazłem coś takiego: http://dariussadowski.com/2011/10/symfony-...ytkownikow.html jutro wypróbuję.
Może ktoś podpowie jeszcze jakiś dobry link o listenerach?

Ten post edytował rcetra 31.01.2012, 15:58:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


ja też to sprawdzałem i security.authentication.failure było w eventach, no bo w serwisie go dodaliśmy, prawda?(IMG:style_emoticons/default/smile.gif)
ale nie był ten event obłsługiwany, tzn jeżeli w metodzie podłączonej wpisałem jakiś wyjątek czy coś to niestety nic z tej metody się nie wykonywało.
Go to the top of the page
+Quote Post
rcetra
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.12.2011

Ostrzeżenie: (0%)
-----


Cytat(AxZx @ 14.02.2012, 16:44:43 ) *
ja też to sprawdzałem i security.authentication.failure było w eventach, no bo w serwisie go dodaliśmy, prawda?(IMG:style_emoticons/default/smile.gif)
ale nie był ten event obłsługiwany, tzn jeżeli w metodzie podłączonej wpisałem jakiś wyjątek czy coś to niestety nic z tej metody się nie wykonywało.

Dopiero teraz się za to wziąłem i niestety mam tak samo. Zdefiniowałem w swoim services.yml:
  1. kernel.listener.LoginHistoryListener:
  2. class: BDK\UserBundle\Listener\LoginHistoryListener
  3. arguments: ["@service_container"]
  4. tags:
  5. - { name: kernel.event_listener, event: security.authentication.success, method: onSecurityAuthenticationSuccess }
  6. - { name: kernel.event_listener, event: security.authentication.failure, method: onSecurityAuthenticationFailure }
  7. - { name: kernel.event_listener, event: security.interactive_login, method: onSecurityInteractiveLogin }

Sama klasa ma:
  1. namespace BDK\UserBundle\Listener;
  2. use Symfony\Component\HttpFoundation\Request;
  3. use Symfony\Component\HttpKernel\HttpKernelInterface;
  4. use Symfony\Component\EventDispatcher\EventDispatcher;
  5. use Symfony\Component\EventDispatcher\Event;
  6. use Symfony\Component\HttpFoundation\Session;
  7. use BDK\UserBundle\Entity\User as User;
  8.  
  9. class LoginHistoryListener {
  10.  
  11. public function __construct ($serviceContainer)
  12. {
  13. $this->request = $serviceContainer->get('request');
  14. $this->em = $serviceContainer->get('doctrine')->getEntityManager();
  15. $this->logger = $serviceContainer->get('authlog');
  16. $this->security = $serviceContainer->get('security.context');
  17. }
  18.  
  19. public function onSecurityAuthenticationSuccess (Event $event)
  20. {
  21. $this->logger->info('onSecurityAuthenticationSuccess');
  22. }
  23.  
  24. public function onSecurityAuthenticationFailure (Event $event)
  25. {
  26. $this->logger->info('onSecurityAuthenticationFailure');
  27. }
  28. }


...i niestety nie działa ani trochę. W debugerze pdo Events jest w "Not Called Listeners":

  1. security.authentication.failure LoginHistoryListener::onSecurityAuthenticationFailure
  2. security.authentication.success LoginHistoryListener::onSecurityAuthenticationSuccess

po prostu ani trochę to nie chce działać, nie potrafię w to zakląć ani trochę życia :-(

help?

P.S. Event security.interactive_login uruchamia się odpowiednią z metodą i ten działa tak jak powinien. Dalej po prostu nie mam władzy nad momentem kiedy ktoś mi się loguje ale bez powodzenia. O to rzecz się cała rozchodzi, jakby ktoś zapomniał. Chcę mieć informację, że ktoś się próbował logować ale mu nie wyszło.

Ten post edytował rcetra 20.02.2012, 11:36:31
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 11:26