Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Bug] 403 Forbiden em qualquer exception

Boa noite!

Baixei o projeto do professor para dar prosseguimento com meus estudos. Porém o qualquer exception que eu tenha, não está sendo devolvido nada no corpo da resposta e com o status 403 Forbiden. Achei que era problema na autenticação, mas nem o erro de "JWT inválido" ele retorna:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadePorém no console, o erro aparece normalmente! Insira aqui a descrição dessa imagem para ajudar na acessibilidadenão sei se isso será explicado mais a frente na aula, pois não vi o professor rodar um end-point para gerar um erro nesse primeiro capitulo, então desculpe qualquer coisa.

Se precisarem do meu código, o mesmo está disponível em: https://github.com/gabrieldaim/vollmed_api

desde já, obrigado!

4 respostas

Vale ressaltar que validações do BeanValidation possuem retorno:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi!

Faltou adicionar o método para tratar exception de regra de negocio na classe TratadorDeErros:

@ExceptionHandler(ValidacaoException.class)
public ResponseEntity tratarErroRegraDeNegocio(ValidacaoException ex) {
    return ResponseEntity.badRequest().body(ex.getMessage());
}

Bons estudos!

Boa tarde, professor! Obrigado pela rapidez na resposta!

Mas infelizmente meu problema ainda não foi resolvido totalmente. Agora consigo tratar os erros de BeanValidation e os erros de regra de negócio.

Mas os erros de JWT ainda sempre dão 403 Forbiden: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Sim, em relação ao JWT será sempre devolvido 403 mesmo. É possível personalizar alguns também:

@ExceptionHandler(BadCredentialsException.class)
public ResponseEntity tratarErroBadCredentials() {
    return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Credenciais inválidas");
}

@ExceptionHandler(AuthenticationException.class)
public ResponseEntity tratarErroAuthentication() {
    return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Falha na autenticação");
}

@ExceptionHandler(AccessDeniedException.class)
public ResponseEntity tratarErroAcessoNegado() {
    return ResponseEntity.status(HttpStatus.FORBIDDEN).body("Acesso negado");
}