我正在使用Spring Webflux启动一个新项目,但现在我不知道该如何处理401响应。
通常,我在@ExceptionHandler({ InvalidTokenException.class, AuthenticationException.class })
上使用Tomcat在Spring Boot上进行处理。
这是我的财务总监建议:
@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
);
}
答案 0 :(得分:0)
尝试将父项Exception.class
暂时放在@ExceptionHandler
中,以检查是否获得了预期的异常类型。有时,它会被包裹在其他类型的异常中,例如UndeclaredThrowableException
。