Я начинаю новый проект с использованием Spring Webflux, но сейчас я не могу понять, как обрабатывать 401 ответ.
Обычно я справляюсь с этим @ExceptionHandler({ InvalidTokenException.class, AuthenticationException.class })
в Spring Boot с Tomcat.
Вот мой совет контроллера:
@ExceptionHandler({ InvalidTokenException.class, AuthenticationException.class })
public ResponseEntity<Mono<ApiResponse>> handleError401(ServerHttpRequest request, Exception e) {
return new ResponseEntity<Mono<ApiResponse>>(
Mono.just(
ApiResponse
.builder()
.success(false)
.code(ResponseType.AUTHENTICATION_ERROR.getCode())
.responseType(ResponseType.AUTHENTICATION_ERROR)
.message("login failed")
.build()
),
HttpStatus.UNAUTHORIZED
);
}
Edit:
Я тоже пробовал это, но не было выброшено исключение
@ExceptionHandler({ Exception.class })
public ResponseEntity<Mono<ApiResponse>> handleError401(ServerHttpRequest request, Exception e) {
return new ResponseEntity<Mono<ApiResponse>>(
Mono.just(
ApiResponse
.builder()
.success(false)
.code(ResponseType.AUTHENTICATION_ERROR.getCode())
.responseType(ResponseType.AUTHENTICATION_ERROR)
.message("login failed")
.build()
),
HttpStatus.UNAUTHORIZED
);
}