1
resposta

Sem resposta no body, quando o usuario e senha estão invalidos

Olá,

Fiz todo o processo e ao colocar um usuário e senha incorreto, por exemplo, colocando um usuário e senha que não existe no banco de dados ele retora o status http 400 (bad request) porém não retorna nenhuma mensagem no body.

E isso foi configurado no trecho de código abaixo em AuthenticationService. Pode me dizer por favor porque a mensagem abaixo não está retornando no body ?

A requisição estou fazendo através do postman.

@Service
public class AuthenticationService implements UserDetailsService {

    @Autowired
    private UserRepository repository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        Optional<User> user = repository.findByEmail(username);

        if (user.isPresent()){
            return user.get();
        }

       throw new UsernameNotFoundException("User not found, please check your details.");
    }
}
1 resposta

Oi Bruna,

Desculpe a demora pela resposta.

Na verdade essa mensagem que é passada no throw new UsernameNotFoundException acaba sendo sobrescrita pelo Spring ao tratar o erro.

Então não tem como exibí-la como resposta no json.

Mas para evitar que apenas o código 400 seja retornado como resposta, sem nenhum body, você pode alterar o código do AutenticacaoController para:

@PostMapping
public ResponseEntity<?> autenticar(@RequestBody @Valid LoginForm form) {
    UsernamePasswordAuthenticationToken dadosLogin = form.converter();

    try {
        Authentication authentication = authManager.authenticate(dadosLogin);
        String token = tokenService.gerarToken(authentication);
        return ResponseEntity.ok(new TokenDto(token, "Bearer"));
    } catch (AuthenticationException e) {
        return ResponseEntity.badRequest().body(e.getMessage());
    }
}

Desse jeito no corpo da resposta vai voltar a String Bad credentials

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software