【问题标题】:How to customize an unauthorized response on Spring WebFlux如何在 Spring WebFlux 上自定义未经授权的响应
【发布时间】:2019-09-23 02:24:58
【问题描述】:

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

【问题讨论】:

    标签: spring spring-boot spring-security spring-webflux


    【解决方案1】:

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

    【讨论】:

    • 我已经进行了更改,但我没有成功...没有抛出异常。我会继续寻找解决方案。问候!
    猜你喜欢
    • 2021-09-03
    • 2021-10-01
    • 2020-11-27
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多