Przekierowywanie w incereptorze podczas wywoływania adresu z REST API

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

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

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

Incereptor wywoływany jest dla np. metody

@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

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.

0

oO czemu nie zrob8c autoryzacji na kontrolerach po ludzku?

0

A czemu używasz postHandle a nie preHandle?

1 użytkowników online, w tym zalogowanych: 0, gości: 1