提问者:小点点

如何在SpringWebFlux上定制未经授权的响应


我正在使用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
        );
    }

编辑:

我也尝试过,但没有抛出异常

    @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个答案

匿名用户

尝试将父< code>Exception.class临时放入< code>@ExceptionHandler中,以检查您是否获得了预期的异常类型。有时它会被包装到其他类型的异常中,如< code > UndeclaredThrowableException 。