Przekierowywanie w incereptorze podczas wywoływania adresu z REST API

Przekierowywanie w incereptorze podczas wywoływania adresu z REST API
J1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 224
0

Chciałem zabezpieczyć kilka adresów w REST API, aby były dostępne tylko dla zalogowanych użytkowników. Utworzyłem do tego specjalny incereptor

Kopiuj
public class CheckLoginStatus extends HandlerInterceptorAdapter {
 
    @Override
    public void postHandle(javax.servlet.http.HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        if(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString().equals("anonymousUser")) {
            response.sendRedirect(signIn);
        }
    }
}

i zarejestrowałem go w konfiguracji

Kopiuj
@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CheckLoginStatus()).addPathPatterns("/messages/*");
    }

Incereptor wywoływany jest dla np. metody

Kopiuj
@PostMapping(value = "/sendMessage")
    @ApiMethod(description = "Save message")
    public HttpEntity<Boolean> sendMessage(
            @RequestBody @Valid SendMessageDTO sendMessageDTO
    ) {
        messageService.saveMessage(converterSendMessageDTOToMessage.convert(sendMessageDTO));
 
        return ResponseEntity.ok(true);
    }

Jednak podczas wywoływania adresu w konsoli wyrzuca wyjątek

Kopiuj
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed

Nie jestem pewien czy działają przekierowania w incereptorze użyte dla adresu z REST API.

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
0

oO czemu nie zrob8c autoryzacji na kontrolerach po ludzku?

jarekczek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Siemianowice Śląskie
  • Postów: 500
0

A czemu używasz postHandle a nie preHandle?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.