728x90
@EnableAuthorizationServer
public class OAuthConfig extends AuthorizationServerConfigurerAdapter {
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.
/* 다른 설정 부분 생략 */
.exceptionTranslator(authorizationWebResponseExceptionTranslator());
}
public WebResponseExceptionTranslator authorizationWebResponseExceptionTranslator() {
return new DefaultWebResponseExceptionTranslator() {
@Override
public ResponseEntity<OAuth2Exception> translate(Exception e) throws Exception {
ObjectMapper mapper = new ObjectMapper();
// 로그인 로직 수행중 일어난 예외처리 Exception e 가 map 으로 받고 있으므로 변환
Map<String, String> err_map = mapper.readValue(e.getMessage(), HashMap.class);
// 필요한 데이터만으로 새로운 map 생성
HashMap<String, Object> responseMap = new HashMap<>();
responseMap.put("code", err_map.get("code"));
responseMap.put("status", err_map.get("status"));
responseMap.put("message", err_map.get("message"));
HttpStatus status = HttpStatus.valueOf(err_map.get("status"));
return new ResponseEntity(responseMap, status);
}
};
}
}
응답 메세지
{
"code": "에러 코드",
"message": "에러 메세지",
"status": "401"
}
728x90
'Back-End > Spring(Boot)' 카테고리의 다른 글
스프링 WebClient로 graphql 서버에 요청응답받기 (0) | 2023.01.27 |
---|---|
스프링 Oauth2 Server jdbc 이용한 토큰 Access 토큰 로그인 마다 새롭게 발급 받기 (커스텀) (0) | 2023.01.02 |
Spring 페이징 처리 중 MyBatis 에러 (0) | 2021.07.27 |
@ControllerAdvice으로 @ExceptionHandler 전역 에러 핸들러 만들기 (0) | 2021.07.20 |
REST API LocalDateTime 사용할 때 문제점 해결해보기 (0) | 2021.07.18 |