Spring HttpClientErrorException не передает HTTP-код и сообщение об ошибке клиенту - PullRequest
0 голосов
/ 16 июня 2020

Я реализую приложение с Angular 7 и Spring Boot. Я использую HttpClientErrorException, чтобы вернуть своему клиенту ответы об ошибках. Ниже приведен пример ошибки аутентификации (Unauthorized 401):

public User authenticate(User user) {
    // find existing user from database by username or email
    User existingUser = repository.findByUsername(user.getUsername());
    existingUser = existingUser == null ? repository.findByEmail(user.getUsername()) : existingUser;
    if (existingUser == null) {
        throw new HttpClientErrorException(HttpStatus.UNAUTHORIZED, "User with given username/email does not exist");
    }

    // validate password
    String rawPassword = user.getPassword();
    boolean success = passwordEncoder.matches(rawPassword, existingUser.getPassword());
    if (!success) {
        throw new HttpClientErrorException(HttpStatus.UNAUTHORIZED, "Given password does not match");
    }
    return existingUser;
}

Когда клиент дает несуществующее имя пользователя, я получаю сообщение HttpClientErrorException в журналах моего сервера, например:

enter image description here

Я ожидаю, что это исключение будет обработано, и вместо этого отправлю клиенту сообщение об ошибке с кодом HTTP. На стороне клиента вместо этого я получаю generi c Internal Server Error (500)

enter image description here

Как я могу обрабатывать все HttpClientErrorException исключения и отправлять их клиент в качестве ответов об ошибке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...