Spring Boot – Wyjątki od przekierowania na stronę logowania

Posted on Posted in Spring

Problem

Czasami zdarza się że nie chcemy aby próba wejścia na jakąś stronę bez zalogowania spowodowała zwrócenie statusu HTTP 401 zamiast standardowego przekierowania na stronę logowania tak jak ma to miejsce przy domyślnej konfiguracji spring boot. Taki problem pojawia się np. przy korzystaniu z technologii PUSH, przy domyślnej konfiguracji łączymy się do endpoint’a, i przy braku sesji okazuje się że zamiast informacji o serwisie dostajemy stronę logowania której oczywiście nie zobaczymy.

Rozwiązanie

Na początek tworzymy „entry point” dla obsługi błędu autoryzacji, w tym przypadku zwracamy błąd HTTP 401 i komunikat błędu.

 

Następnie musimy skonfigurować odpowiednio spring security tak żeby korzystało z naszej implementacji.

 

Pokazany fragment konfiguracji dodaje nasz entry point dla odwołań spełniających regułę, w tym przypadku wywołanie adresu „/example” metodą GET. Framework „Spring Security” udostępnia dość duży zbiór reguł które umożliwiają precyzyjne określenie warunków w jakich ma zostać wykorzystany dany entry point.

Implementacje RequestMatcher dostarczone przez framework

  • AndRequestMatcher
  • OrRequestMatcher
  • NegatedRequestMatcher
  • AntPathRequestMatcher
  • AnyRequestMatcher
  • ELRequestMatcher
  • IpAddressMatcher
  • MediaTypeRequestMatcher
  • RegexRequestMatcher
  • RequestHeaderRequestMatcher

Własne implementacje RequestMatcher

Dopisanie własnej implementacji jest dość proste i nie powinno sprawić problemu, przykładem może być odfiltrowanie requestów wysyłanych np. przez jQuery (AJAX).

 

 

One thought on “Spring Boot – Wyjątki od przekierowania na stronę logowania

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *