本文详解如何在 micronaut 的 `httpserverfilter` 中基于校验逻辑主动中断请求流程,并直接返回如 403 forbidden 等 http 响应,避免后续处理器执行。
在 Micronaut 中,过滤器(HttpServerFilter)是实现横切关注点(如鉴权、参数校验、日志记录)的核心机制。与传统 Servlet 过滤器不同,Micronaut 的过滤器基于响应式编程模型(Project Reactor),其 doFilter 方法返回一个 Publisher> ——这意味着你既可以将请求交由后续链路处理(通过 chain.proceed(request)),也可以完全终止流程,立即返回自定义响应。
关键在于:不调用 chain.proceed() 即可中断请求流。此时只需构造并返回一个 Mono.just(HttpResponse) 即可,Micronaut 会将其作为最终响应发送给客户端,后续控制器、拦截器等组件均不会被执行。
以下是一个完整的示例,用于对 /hello 路径的请求进行合法性校验,并在失败时返回 403 Forbidden: