Как настроить неавторизованный ответ на Spring WebFlux - PullRequest
1 голос
/ 05 мая 2019

Я начинаю новый проект с использованием 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
        );
    }

1 Ответ

0 голосов
/ 05 мая 2019

Попробуйте временно поместить родителя Exception.class в @ExceptionHandler, чтобы проверить, получаете ли вы предполагаемый тип исключения.Иногда это включается в исключение другого типа, например UndeclaredThrowableException.

...