![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 176 Pomógł: 0 Dołączył: 8.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki problem:
Posiadam dwa bundle (jedna aplikacja) na różnych domenach: Backend: cms.app.com Frontend: app.com Konfigurację ogólną dla całości (config.yml) mam taką:
app/config/security.yml (ogólny):
Powyżej zdefiniowałem dwa firewalle dla każdego bundla osobny, tak żeby można było na frontend wchodzić jako anonymous, natomiast ma backend tylko po zalogowaniu. Dla backendu BackendBundle/Resources/config/config.yml:
Dla frontendu FrontendBundle/Resources/config/config.yml:
Niestety takie coś nie działa... brany jest pod uwagę zawsze pierwszy firewall, niezależnie od wykorzystywanego bundla (w tym wypadku frontend). Niezależnie od wartości fos_user: firewall_name: backend w config.yml w BackendBundle. Próbowałem tez rozdzielić security.yml dla kazdego z bundli osobno ale pojawił się błąd: Please define all elements for this path in one config file, więc wróciłem do jednego, głównego pliku security z dwoma firewallami. Prośba o pomoc do kogoś, kto już przez to przebrnął. Pozdrawiam i z góry dzięki za pomoc. Ok udało mi się dotrzeć do mechanizmu powstałego w sf 2.2. services.yml:
security.yml:
I teraz działa jak powinno, tzn. na domenie bez 'cms' user jest jako anonymous i wpuszcza na aplikację, na domenie z 'cms' natomiast jako niezalogowany i przekierowuje go na ekran logowania. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 472 Pomógł: 7 Dołączył: 7.12.2005 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Problem w tym, że Symfony2 analizuje dostęp do zasobów po właśnie patternach, które zdefiniowane są w security.yml - w tym wypadku oba patterny były identyczne - dlatego zawsze tylko pierwszy był brany pod uwagę (nie zważając na nazwę hosta). Konfiguracja z config.yml (firewalla dla fos_user'a) nie miała wpływu na proces autoryzacji, który przeprowadzany jest przed inicjalizacją konfiguracji dla bundle'i, nie wiem nawet po co ten parametr tam jest. ;p
Rozwiązaniem jest nadpisanie RequestMatcher'a o weryfikację hosta - tutaj jednak z pomocą przychodzi parametr arguments w konfiguracji, który zastępuje konieczność nadpisywania tego service'u. Istnieje nawet Issue na GitHubie, który traktuje o możliwości przypisania firewalla do konkretnego hosta - jednak od pół roku nic się w tej sprawie nie stało (zapewne ze względu na istniejącą możliwość, którą pokazałeś). Jeśli masz ochotę dorzuć komentarz na https://github.com/symfony/symfony/issues/7103 - może ktoś przyjrzy to jeszcze raz. : ) -------------------- Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 08:12 |