![]() |
![]() ![]() |
![]() |
![]()
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 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 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Podepnij własnego listenera dla zdarzenia security.* (nie wiem który to dokładnie, będziesz musiał poszukać) i tam zapisz informację o (nie)udanym logowaniu.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
security.interactive_login to nazwa zdarzenia, które wywołuje się przy logowaniu.
A tak a'propo: nie macie może jakiejś ściągi z listą wszystkich/większości zdarzeń, które dzieją się w Symfony2 (w standardowej paczce)? Czy oprócz: kernel.request kernel.controller kernel.response są jeszcze jakieś godne uwagi? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
security.interactive_login to nazwa zdarzenia, które wywołuje się przy logowaniu. Właśnie, wywołuje się tylko przy poprawnym logowaniu, a potrzebuję też logować próby nieudane. Szukałem w piątek, szukam dzisiaj od kilku godzin i przeszukuję kod, ale nie mogę namierzyć niestety poprawnego eventu. Podpowiedzcie coś, jeśli używacie. Mignęło mi kiedyś coś o zmiane statusu autoryzacji, ale nie mogę tego znów namierzyć. Wiem, że umożliwiał właśnie wywołanie (jeśli dobrze zapamiętałem) moment zalogowania, wylogowania, nie wiem jak z nieudanymi próbami. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Główny fragment kodu odpowiedzialnego za logowanie: https://github.com/symfony/symfony/blob/mas...Manager.php#L61
Jak widać jest tam wywołanie odpowiednich zdarzeń dla poprawnego i błędnego logowania, tak więc zdarzenia jakich szukasz to: security.authentication.success/failure (przy czym raczej zapisz to sobie w formie stałych). |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Główny fragment kodu odpowiedzialnego za logowanie: https://github.com/symfony/symfony/blob/mas...Manager.php#L61 Jak widać jest tam wywołanie odpowiednich zdarzeń dla poprawnego i błędnego logowania, tak więc zdarzenia jakich szukasz to: security.authentication.success/failure (przy czym raczej zapisz to sobie w formie stałych). Wypróbowałem obydwa, niestety ani jeden ani drugi się nie wywołuje. Tak wygląda definicja serwisu w config.yml: Sam listener zawiera odpowiednią metodę: Niestety nawet: Zupełnie nie reaguje. Symfonia sama podpowiada, jeżeli konfiguracja jest błędna (czyli brakuje jej metody). Przy security.interactive_login wszystko działało (oczywiście metoda klasy inaczej się nazywała). Może coś źle robię? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Skorzystaj z debuggera i sprawdź jak kod zachowuje się w metodzie authenticate(). Od razu będziesz widział jak kod się wykonuje, czy EventDispatcher ma podpięte odpowiednie zdarzenia itd.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Niestety, security.authentication, po prostu jest na liście tych niewywołanych :-(
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kod services: kernel.listener.LoginHistoryListener: class: BDK\UserBundle\Listener\LoginHistoryListener arguments: ['@service_container'] tags: - { name: kernel.event_listener, event: security.authentication.success, method: onSecurityAuthenticationSuccess} zamień tamten kod na ten. I radzę teksty ze znakami specjalnymi (@ / : i inne 'nietypowe') umieszczać w apostrofach/cudzysłowach. (inaczej jest to niezgodne ze standardem YAMLa i niektóre parsery mogą się na tym wywalić. (chociażby Eclipsowy YEdit) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
udało się komuś podziałać coś z tymi eventami?
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Sprawdziłem właśnie u siebie i działa zarówno security.authentication.failure jak i security.authentication.success. Konfiguracja prawie identyczna jak wyżej (zmieniłem tylko nazwę swojego listenera).
Cytat Niestety, security.authentication, po prostu jest na liście tych niewywołanych :-( Jesteś pewien? Po wysłaniu formularza logowania zwróciło Ci jakąś stronę, wszedłeś w profilera i na liście nie wywołanych zdarzeń znalazłeś obydwa (success i failure)? Jeśli tak to nie ma się co dziwić, bo zobaczyłeś zdarzenia dla ostatnio wyświetlonej strony. Powinieneś wyszukać (panel z lewej) żądania, które wysyłało formularz logowania. |
|
|
![]()
Post
#12
|
|
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. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.12.2011 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. Dopiero teraz się za to wziąłem i niestety mam tak samo. Zdefiniowałem w swoim services.yml:
Sama klasa ma:
...i niestety nie działa ani trochę. W debugerze pdo Events jest w "Not Called Listeners":
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 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Cytat ...i niestety nie działa ani trochę. W debugerze pdo Events jest w "Not Called Listeners": Jesteś pewien? Po wysłaniu formularza logowania zwróciło Ci jakąś stronę, wszedłeś w profilera i na liście nie wywołanych zdarzeń znalazłeś obydwa (success i failure)? Jeśli tak to nie ma się co dziwić, bo zobaczyłeś zdarzenia dla ostatnio wyświetlonej strony. Powinieneś wyszukać (panel z lewej) żądania, które wysyłało formularz logowania. Ewentualnie wyeksportuj dane z debugera i wrzuć je gdzieś do pobrania. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 17.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
W paczce Symfony 2.0.11 nie ma eventow security.authentication.success oraz security.authentication.failure. Na githubie sa dodane, jednak w oficjalnej paczce ich nie ma. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 04:34 |