Mam sytuacji gdzie potrzebne do uruchomienia kodu, jeśli użytkownik próbuje dostępu zabezpieczonego URL i jest nie uwierzytelnione/autoryzowane.Czy można sprawdzić programowo, czy adres URL/ścieżka jest chroniona za zaporą sieciową?
Domyślnie Symfony obsługuje nieuwierzytelnionych użytkowników poprzez przekierowanie lub przekierowanie użytkownika do formularza logowania. Chciałbym temu zapobiec, jeśli metodą żądania jest POST, a zamiast tego echo obiektu JSON.
Najlepszym sposobem mogę myśleć, aby obsłużyć tego celu jest stworzenie własnego słuchacza, który nasłuchuje na razie kernel.request
i sprawdza dwie rzeczy:
- sprawdza, czy metoda żądania jest POST
- sprawdza czy użytkownik jest w pełni uwierzytelniony
Jeśli jest to żądanie POST, a użytkownik nie jest w pełni uwierzytelniony, wywołuję echo obiektu JSON.
Ale mój słuchacz (expectedly) wypalania dla wszystkich żądań - Chciałbym ograniczyć go tylko sprawdzić, czy żądanie dotyczy zawartości chronionej przez firewall. Czy można to sprawdzić programowo?
Mam też dokuczliwy podejrzenie istnieje prostszy sposób, aby przejść na ten temat, ale nie mogę tego rozgryźć, więc jeśli ktoś ma jakieś wskazówki, chciałbym je :)
Edycja usłyszeć
@Problematic - powodem, dla sprawdzenia tylko zaporę żądań jest, bo mam pewne wnioski, które nie są zaporę, a jeśli mój kod jest zwolniony, będę otrzymywać ww obiekt JSON zamiast realnej odpowiedzi na wniosek.
W tej chwili, jeśli nie jestem zalogowany i wysyłam żądanie POST do api/get/something
(które znajduje się za firewallem), Symfony zwraca kod HTML opisujący stronę logowania. Zamiast tego chcę po prostu powtórzyć coś takiego, jak {error: 'User is not authorized'}
. Ale chcę, żeby tak było tylko w przypadku żądań POST.
Jaki jest powód sprawdzania tylko zapór ogniowych? – Problematic
@Problematic, zobacz moją edycję –