Spring

오류 응답 Spring Boot에서 "메시지" 필드가 비어 있습니다. 질문하다

기록만이살길 2023. 1. 11. 00:58
반응형

오류 응답 Spring Boot에서 "메시지" 필드가 비어 있습니다. 질문하다

1. 질문(문제점):

나는 이와 같은 무단 예외를 처리했습니다

@ResponseStatus(value= HttpStatus.UNAUTHORIZED)
public class UnauthorizedException extends RuntimeException {
    public UnauthorizedException(String message) {
        super(message);
    }
}

하지만 다음과 같이 오류가 발생하면

throw new UnauthorizedException("Invalid credentials");

다음과 같이 응답에 빈 오류 메시지가 표시됩니다.

{
    "timestamp": "2020-05-27T13:44:58.032+00:00",
    "status": 401,
    "error": "Unauthorized",
    "message": "",
    "path": "/auth/register"
}

사용해 보았는데,

throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Invalid credentials");

그러나 결과는 여전히 동일합니다. spring-boot-devtools 의존성을 추가했을 때 스택 추적에서도 예상대로 메시지가 표시됩니다. 이 문제를 어떻게 해결할 수 있습니까?

스프링 버전: 2.3.0 자바 버전: 11.0

2. 해결방안:

알겠습니다. 그들은 server.error.include-message의 기본값을 "never"로 변경했습니다(여기의 설명 섹션 참조: Spring 2.3.0 릴리스 정보

모든 기본값은 여기에 나열되어 있습니다. Spring Boot 참조 문서

다음과 같이 application.yaml(또는 속성)을 구성하기만 하면 됩니다.

server:
  error:
    include-message: always
    include-binding-errors: always

오류 메시지를 표시하면 서버 구현에 대한 정보가 유출될 수 있습니다.

반응형