Wpis z mikrobloga

Używał ktoś nowego komponentu Guard w Symfony? Próbuję z nim zrobić logowanie przez zwykły formularz, z weryfikacją danych przez zewnętrzny system. Problem w tym że, tak jak w przykładzie z dokumentacji, ten Guard oczekuje ode mnie że będę za każdym Requestem wysyłał do niego dane z formularza logowania. Dodałem w security.yml stateless: false dla pewności że będzie trzymał dane w sesji, ale to nie pomaga. W dokumentacji jest napisane że można tego używać do zwykłego formularza.
#php #symfony2
  • 8
@kmicolo: przykładowy kod jest użyty do budowania API gdzie każdy request wysyła ze sobą token. Ale skoro jest napisane że ten Guard może być użyty również do login form, to myślę że wypadałoby gdyby to zapisywało w sesji że się zalogowałem. Chyba że się mylę i ten Guard służy do czego innego i muszę to swoje logowanie zrobić starymi metodami.
@Harry19911: jeszcze się tym nie bawiłem, ale token to nie to samo co formularz logowania :) w reście (który jest bezstanowy) musisz przesyłać token w każdym requeście, przy formularzu tworzysz logowanie oparte o stan sesji tak jak mówisz.
@kmicolo: i w dokumentacji jest

# if you want, disable storing the user in the session

# stateless: true

więc jeśli robię restowe api muszę tutaj dać true, a ja dalem false, mimo to nie zachowuje w sesji logowania. Debugowałem kod i widziałem że znajduje tego użytkownika, później przekierowuje dalej i już nie jest wcale zalogowany.

Tutaj więcej info
http://stackoverflow.com/questions/34250444/symfony-2-guard-component-and-a-normal-login-form
@Harry19911: Guard ma stanowić ułatwienie dla osób, które piszą własne, niestandardowe implementacje uwierzytelniania.

Jak chcesz zrobić typowy mechanizm logowania się przez formularz logowania, trzymać info o zalogowanym w sesji i ewentualnie dorzucić „pamiętaj mnie”, to skorzystaj ze standardowych mechanizmów Symfony:

http://symfony.com/doc/current/cookbook/security/form_login_setup.html

Ewentualnie użyj gotowca:

https://github.com/FriendsOfSymfony/FOSUserBundle