-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
필터에서 reject되는 경우 공통처리
22.03.01 15:34 작성 조회수 449
0
안녕하세요 강사님? 좋은강의 잘 듣고 있습니다.
강의 수강 중 질문이 있습니다 !
apigateway-service에서 인증된 사용자 요청과 같은 검증을 공통으로 처리할 때, 오류가발생한 경우 현재 강의에서는 setComplete()함수를 통해 request를 user-service까지전달하지 않고 종료하는것으로 이해했습니다.
에러페이지로 redirect를 보낸다거나, 클라이언트에 에러 응답을 json형식으로 반환할 수 는없을까요 ?
즉, apigateway-service의 filter에서 reject되었을 때 에러에 대한 결과 페이지를 어떻게 깔끔하게 처리할 수 있을까요 ??
* [공식문서]를 찾아보았지만 적당한 해결책을 찾지못해 질문드립니다 !
답변을 작성해보세요.
1
Dowon Lee
지식공유자22.03.06 21:09
안녕하세요, 이도원입니다.
onError() 메소드에서 ServerHttpResponse를 통해 해당 응답을 종료하기 위한 용도로 setComplete() 메소드를 호출하였습니다. 만약 특정한 메시지를 같이 전달하고자 한다면, 아래와 같이 이용해 볼 수 있습니다. 아래 작업은 WebFlux와 Reactive Java에 관해 조금 찾아 보시고 실행하시면 도움이 될 것 같습니다.
private Mono<Void> onError(ServerWebExchange exchange, String err, HttpStatus httpStatus) {
ServerHttpResponse response = exchange.getResponse();
response.setStatusCode(httpStatus);
log.error(err);
byte[] bytes = "The requested token is invalid.".getBytes(StandardCharsets.UTF_8);
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(bytes);
return response.writeWith(Flux.just(buffer));
// return response.setComplete();
}
감사합니다.
답변 1