在Spring Cloud Gateway Filters中抛出自定义运行时异常

时间:2018-05-23 05:39:52

标签: spring spring-cloud-gateway

我们正在使用Spring Cloud Gateway和Spring Boot 2以及反应式webflux模块。 有一个验证过滤器,为其中一个路由添加。 现在,如果我们抛出一个带有特定状态代码的RuntimeException,它实际上并没有恢复。 之前这个auth检查是Spring中HandlerInterceptor的一部分,现在我们不能使用web模块和webflux(来自Spring云网关的冲突)。 例如:

@Override
public GatewayFilter apply(Object config) {
   ServerHttpRequest httpRequest = exchange.getRequest();
   if(!someUtil.validRequest(httpRequest) {
          throw new RuntimeException("Throw 401 Unauthorized with Custom error code and message");
   }
}

目前,实际响应总是会产生500内部服务器错误。 从哪里来的?我们可以在这里抓住过滤器中的错误吗?

1 个答案:

答案 0 :(得分:1)

您可以实现自定义错误处理程序,这里是spring boot document

或者您可以简单地引发ResponseStatusException,默认错误处理程序将呈现特定状态。