当前位置: 首页 > 知识库问答 >
问题:

Spring云网关过滤器中自定义运行时异常的抛出

梁丘宏硕
2023-03-14

我们正在使用带有Spring Boot2和reactive webflux模块的Spring Cloud Gateway。有一个身份验证过滤器是为其中一个路由添加的。现在,如果我们抛出一个带有特定状态代码的RuntimeException,它实际上并不正常。早先这个auth检查是Spring中HandlerInterceptor的一部分,现在我们不能使用web模块和webflux(来自Spring cloud gateway的冲突)。例如:

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

潘文乐
2023-03-14

您可以实现一个自定义错误处理程序,下面是Spring Boot文档。

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

 类似资料:
  • //有什么方法可以在我的自定义过滤器类中获得“admin,XY8382,basic” 我的筛选器类

  • 我正在尝试将JHipster从使用Zuul迁移到Spring云网关。JHipster使用Eureka来查找路由,我相信我已经正确配置了Spring Cloud Gateway来查找路由并向它们传播访问令牌。下面是我的配置: 我创建了一个pull请求,以显示集成Spring Cloud Gateway后发生了什么变化。 https://github.com/mraible/jhipster-reac

  • 我试图调试我的应用程序,但调试器没有击中此代码块。这是我的自定义网关过滤器。 下面是这个过滤器的配置 当尝试发送请求时,此endpoint不会启动调试器或将日志打印到控制台。我在这里错过了什么。谢谢你。 如果我在主应用程序中创建AuthorizationHeaderFilter的bean,如下所示 应用程序在启动时引发此错误 我还为云api网关设置了日志级别来调试,下面是日志

  • 我有一个验证令牌的自定义筛选器tokenLoginFilter 我的Spring安全 令牌登录过滤器 在authenticationmanager . authenticate调用中,我从TokenAuthenticationProvider中抛出了BadCredentialsException 令牌身份验证提供程序 Tomcat将此BadCredentialsException解释为错误代码50

  • 我想使用通用的方式来管理5xx错误代码,让我们具体地说,当数据库在我的整个spring应用程序关闭的情况。我想要一个相当错误的json而不是堆栈跟踪。 对于控制器,我有一个类来处理不同的异常,这也可以捕捉db在请求中间停止的情况。但这还不是全部。我还碰巧有一个自定义的扩展了,当我调用时,我会得到并且它不会被管理。我在网上读了几件事,只会让我更加困惑。 所以我有很多问题: 是否需要实现自定义筛选器?