Tworzę interfejs API REST dla mojej aplikacji opartej na JS.Aplikacja Symfony2 z uwierzytelnianiem RESTful, przy użyciu FOSRestBundle i FOSUserBundle
Podczas logowania formularz logowania jest przesyłany za pośrednictwem AJAX do mojego interfejsu API pod adresem /rest/login
.
- Jeżeli logowanie jest pomyślny, to zwraca 204
- Jeśli nie, to zwraca 401
Chociaż zostały rozdzielone zapór dla API i samą aplikacją, mają ten sam kontekst, w jakim powinno to oznaczać, że gdy użytkownik uwierzytelnia się w stosunku do interfejsu API, jest również uwierzytelniany w stosunku do aplikacji. Tak więc, gdy serwer zwraca 204, strona będzie przeładować i powinien przekierować użytkownika do aplikacji, bo jest teraz zalogowany.
Próbowałem użyć gotowego check_login
stronę z FOSUserBundle i wskazał /rest/login
tam.
login:
path: /rest/login
defaults:
_controller: FOSUserBundle:Security:check
methods: [ POST ]
To nie działa, ponieważ zawsze zwraca przekierowanie, bez względu na wszystko. Czytałem dokumentację dla symfony i nie mogłem znaleźć, jak stworzyć niestandardową stronę check_login
. To, czego potrzebuję, to coś takiego. Nie mam pojęcia, jak to zrobić. Nie mam pojęcia, jak to zrobić. Nic, co znalazłem w jakiejkolwiek dokumentacji, pomogło mi trochę. Będę wdzięczny za każdą sugestię, która wskaże mi właściwy kierunek.
EDYCJA: W celu dalszego uproszczenia, do czego dążę. Chcę, aby mój login działał dokładnie tak samo, jak normalnie form_login. Chcę tylko zmienić odpowiedź, która odsyła - zamiast przekierowania chcę 204 na sukces i 401 na niepowodzenie.
tak, to czy muszę wdrożyć zupełnie nowy dostawcy uwierzytelniania zwyczaj?Imo to trochę przesada, ponieważ wszystko, co trzeba zmienić, to zachowanie słuchacza, aby wysłać 204/401 zamiast przekierowania, a nie cały proces. –