1
resposta

[Bug] Voll Medicos - possível erro na rotina de tratamento de erros

Olá comunidade!

No curso" Spring Boot 3: aplique boas práticas e proteja uma API Rest", foi desenvolvida uma autenticação via Token JWT que dispara uma RuntimeException com a mensagem "Token JWT inválido ou expirado!" quando o token não consegue ser validado e gera o console abaixo.

imagen da console

Nessa aplicação, também foi desenvolvida uma rotina para tratar os erros: TratadorDeErros.java

O problema é que, por alguma razão, quando o token não consegue ser validado e a exception é disparada, nenhuma mensagem é exibida no corpo do "Response Entity" !!!!

Imagem do resultado de uma tentativa de acesso para um token expirado

No meu entendimento, a mensagem que aparece na console deveria ser exibida também como retorno para que a aplicação FRONT-END pudesse tratá-la e providenciar o login novamente.

Então, imagino que é preciso fazer alguma alteração nessa rotina de tratamento de erro para que esse comportamento seja obtido, só que não consegui ainda chegar ao resultado desejado.

Agradeço a ajuda de vcs.

Obrigado.

1 resposta

Olá, Frederico

Você pode modificar o seu tratador de erros para incluir a mensagem de erro no corpo da resposta. No seu caso, a classe TratadorDeErros.java é responsável por isso.

Vamos supor que o seu método que trata as RuntimeException se pareça com algo assim:

@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleRuntimeException(RuntimeException ex) {
    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}

Você pode modificar esse método para incluir a mensagem de erro no corpo da resposta, assim:

@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleRuntimeException(RuntimeException ex) {
    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ex.getMessage());
}

Desta forma, quando uma RuntimeException ocorrer, a mensagem de erro será incluída no corpo da resposta HTTP, e a aplicação cliente poderá tratar essa mensagem conforme necessário.

Espero ter ajudado e bons estudos!