我正在使用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
);
}
尝试将父< code>Exception.class临时放入< code>@ExceptionHandler中,以检查您是否获得了预期的异常类型。有时它会被包装到其他类型的异常中,如< code > UndeclaredThrowableException 。